使用工具包中提供的库编译我的 CUDA 程序



我编写了简单的CUDA c ++程序来模拟2D矩阵上的扩散。当我尝试使用工具包中提供的一些库时,我遇到了麻烦。我想用 cuBlas 中的东西替换我效率极低的矩阵转置内核,以及用求解线性系统的 cuSolvers 实现替换 implCU。问题是我不知道如何使用这些函数或编译它们。它与Makefiles一起处理Nvidia提供的示例代码。如果有人能帮助我,理想情况下向我展示在编写 .cu 文件时应该如何使用这些功能,我将不胜感激。

这是代码:http://pastebin.com/UKhJZQBz

我在 Ubuntu 16.04 上,我已经导出了官方指南中写的 PATH 变量(因此它们包含/usr/local/cuda-8.0/bin(。

这是nvcc -I /usr/local/cuda-8.0/samples/common/inc/ difusion2d.cu的输出

/tmp/tmpxft_00001c09_00000000-16_difusion2d.o: In function `csr_mat_norminf(int, int, int, cusparseMatDescr*, double const*, int const*, int const*)':
undefined reference to `cusparseGetMatIndexBase'
/tmp/tmpxft_00001c09_00000000-16_difusion2d.o: In function `display_matrix(int, int, int, cusparseMatDescr*, double const*, int const*, int const*)':
undefined reference to `cusparseGetMatIndexBase'
/tmp/tmpxft_00001c09_00000000-16_difusion2d.o: In function `main':
undefined reference to `cusolverDnCreate'
undefined reference to `cublasCreate_v2'
undefined reference to `cusolverDnSetStream'
undefined reference to `cublasSetStream_v2'
collect2: error: ld returned 1 exit status

必须显式链接库和库求解器库。类似的东西

nvcc -I /usr/local/cuda-8.0/samples/common/inc 
     -L/path/to/CUDA/libraries  difusion2d.cu -lcublas -lcusolver

应该工作。根据您的安装,提供库搜索路径的-L选项可能是必需的,也可能不是必需的。

相关内容

  • 没有找到相关文章

最新更新