【问题标题】:Compiling Basic C-Language CUDA code in Linux (Ubuntu)在 Linux (Ubuntu) 中编译基本 C 语言 CUDA 代码
【发布时间】:2012-08-29 09:38:30
【问题描述】:

我花了很多时间在运行 Ubuntu Linux (11.04) 的机器上设置 CUDA 工具链。该装备有两个 NVIDIA Tesla GPU,我能够编译和运行来自 NVIDIA GPU Computing SDK 的测试程序,例如 deviceQuery、deviceQueryDrv 和 bandwidthTest。

当我尝试从书籍和在线资源编译基本示例程序时,我的问题出现了。我知道您应该使用 NVCC 进行编译,但每当我使用它时都会出现编译错误。基本上任何涉及 CUDA 库的包含语句都会导致缺少文件/库错误。一个例子是:

#include <cutil.h>

我是否需要某种 makefile 来将编译器定向到这些库,或者在使用 NVCC 编译时是否需要设置其他标志?

我遵循了这些指南:

http://hdfpga.blogspot.com/2011/05/install-cuda-40-on-ubuntu-1104.htmlhttp://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Getting_Started_Linux.pdf

【问题讨论】:

  • 您是如何构建 SDK 示例的?是否列出了您未与 NVCC 一起使用的编译器标志?
  • 我基本上是用“nvcc test.cu -o test”构建的。不过,perreal 的解决方案对我有用。
  • 说得太早了,我编译了一个包含 cutil.h 的不同示例程序,我得到了同样的错误。

标签: linux ubuntu makefile cuda nvidia


【解决方案1】:

要修复包含问题,请将 cuda 包含目录添加到您的编译选项中(假设它是 /usr/local/cuda/include):

nvcc -I/usr/local/cuda/include -L/usr/local/cuda/lib test.cu -o test

【讨论】:

  • 这成功了!我能够从我的主文件夹编译这个程序:resultsovercoffee.com/2011/01/our-first-cuda-c-program.html 我收到一个似乎并没有影响我成功的警告:“/usr/bin/ld: 跳过不兼容的 /usr/local/cuda/lib/libcudart.所以当搜索 -lcudart"
  • 我收回,对不起。我说得太早了,我编译了一个包含 cutil.h 的不同示例程序,我得到了同样的错误。 nvcc -I/usr/local/cuda/include -L/usr/local/cuda/lib matrixmul.cu -o matrixmul matrixmul.cu:6:致命错误:cutil.h:没有这样的文件或目录编译终止
  • cutil.h 包含在 SDK 中,因此您还需要在 nvcc 选项中添加 -I/CUDA_SDK_PATH/C/common/inc
  • 这对我有用。谢谢,再次抱歉第一次没有理解。
【解决方案2】:

cutil 不是 CUDA 工具包的一部分。它是 CUDA SDK 的一部分。因此,假设您已按照说明操作并将 PATH 和 LIB 目录添加到环境变量中,您仍然需要指向 CUDA SDK 包含和库目录。

要手动包含该库,您必须将路径传递给编译器:

nvcc -I/CUDA_SDK_PATH/C/common/inc -L/CUDA_SDK_PATH/C/lib ...

虽然我个人不喜欢使用 CUDA SDK 库,但您可能会发现从 CUDA SDK 示例开始一个项目更容易。

【讨论】:

  • 这也有效,并且没有抛出我在 perreal 的回答中提到的警告。我是 stackoverflow 的新手-也许这超出了范围,但是您为什么不喜欢使用 CUDA SDK 库?我刚刚开始使用 CUDA,所以我会留意提示。
  • 再说一次,我说得太早了。这是我使用此命令行字符串构建时得到的结果:nvcc -I/CUDA_SDK_PATH/C/common/inc -L/CUDA_SDK_PATH/C/lib matrixmul.cu -o matrixmul matrixmul.cu:6:致命错误:cutil。 h:没有这样的文件或目录编译终止。很抱歉造成混乱。
  • 感觉很愚蠢——我离开了 CUDA_SDK_PATH 而不是用我自己的。现在可以了,谢谢。
  • 关于SDK库的使用,我建议在stackoverflow中搜索。如果您没有找到答案,那么您可以提出一个新问题。
猜你喜欢
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 2012-05-11
  • 1970-01-01
相关资源
最近更新 更多