cuda - 如何编译 CUDA 代码然后将其链接到 C++ 项目?

标签 cuda g++ nvcc

我正在寻求帮助来开始涉及 CUDA 的项目。我的目标是拥有一个可以在 native g++ 编译器中编译但使用 CUDA 代码的项目。我知道我必须在 nvcc 编译器中编译我的 CUDA 代码,但根据我的理解,我可以以某种方式将 CUDA 代码编译成 cubin 文件或 ptx 文件。

这是我的问题:

  1. 如何使用nvcc编译成cubin文件或ptx文件?我不需要 -c 之类的东西吗?
  2. 我想使用哪种文件类型?
  3. 正确编译和链接项目的 g++ 命令是什么?

假设如下:

  1. 我有一个名为“main.cpp”的文件,其中包含 main 函数并包含 cuda.h。
  2. 我有另一个名为“cudaFunc.cu”的文件,其中包含 CUDA 代码。比方说,我想添加 main.cpp 中存在的两个整数数组。

最佳答案

我能够通过几个不同的帖子(包括这些帖子)解决我的问题。不要忘记,如果您使用的是 64 位机器,则要链接到 64 位库!这听起来有点明显,但对于像我这样的 clown 来说,这是我忘记的事情。这是我现在使用的 make 文件...如果你能理解这个 make 文件,你应该能够做我想做的事情,即单独编译 cuda 代码和其他 G++ 代码。另请记住,您必须拥有某些版本的 gcc、g++ 编译器(我正在使用 g++-4.4,它对我有用)无论如何,这是 make 文件...

all: program

program: cudacode.o
    g++ -o program -L/usr/local/cuda/lib64 -lcuda -lcudart main.cpp  cudacode.o 

cudacode.o:
    nvcc -c -arch=sm_20 cudacode.cu 

clean: rm -f *.o program

希望您能看到我做的第一件事是使用 nvcc 编译器和 编译 cudacode(已保存为 .cu)- c 选项(另请注意,您可能需要删除 -arch=sm_20)。这创建了一个cudacode.o。然后,我使用带有 -o 选项的 g++ 编译器并链接到 lib64 库,并链接 -lcuda-lcudart 库并进行编译我的 main.cpp 然后链接 cudacode.o。希望这对某人有帮助!

关于cuda - 如何编译 CUDA 代码然后将其链接到 C++ 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421108/

相关文章:

c++ - 成员初始化列表错误中的模板基构造函数调用

cuda - nvcc 无法编译

c - 如何优化 CUDA 埃拉托斯特尼筛

c++ - CUDA:达到计算能力 3.0 的 blockIdx.x 的最大可能值

c++ - 初学者 CUDA - 简单的 var 增量不起作用

c++ - 用 C++ 编译并获得 "ready to go"可执行文件

c++ - Array > 1769472 时 CUDA 不返回值

c++ - ocl::CRException 的类型信息

python - 为什么 Theano 打印 "cc1plus: fatal error: cuda_runtime.h: No such file or directory"?

编译和链接纯 C 和 CUDA 代码 [警告 : implicit declaration of function]