我正在寻求帮助来开始涉及 CUDA 的项目。我的目标是拥有一个可以在 native g++ 编译器中编译但使用 CUDA 代码的项目。我知道我必须在 nvcc 编译器中编译我的 CUDA 代码,但根据我的理解,我可以以某种方式将 CUDA 代码编译成 cubin 文件或 ptx 文件。
这是我的问题:
- 如何使用nvcc编译成cubin文件或ptx文件?我不需要 -c 之类的东西吗?
- 我想使用哪种文件类型?
- 正确编译和链接项目的 g++ 命令是什么?
假设如下:
- 我有一个名为“main.cpp”的文件,其中包含 main 函数并包含 cuda.h。
- 我有另一个名为“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/