我正在寻找帮助开始涉及CUDA的项目。我的目标是有一个项目,我可以在本机g ++编译器中编译,但使用CUDA代码。我知道我必须在nvcc编译器中编译我的CUDA代码,但根据我的理解,我可以以某种方式将CUDA代码编译成cubin文件或ptx文件。
以下是我的问题:
假设如下:
答案 0 :(得分:48)
我能够用几个不同的帖子解决我的问题,包括这些帖子。不要忘记,如果您使用64位机器链接到64位库!它接缝有点明显,但对于像我这样的小丑,这是我忘了的东西。这是我现在使用的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 -rf *o program
希望您能看到我做的第一件事是使用nvcc编译器和-c选项编译cudacode(已保存为.cu)(另请注意,您可能要删除-arch = sm_20) 。这创造了一个cudacode.o。然后我使用带有-o选项的g ++编译器并链接到lib64库并链接lcuda和lcudart文件以及编译我的main.cpp然后链接cudacode.o。希望这有助于某人!
答案 1 :(得分:15)
我的回答to this recent question可能描述了您的需求。
补充说明:
我开始重复我的other answer,所以我建议你阅读它。 :)
答案 2 :(得分:10)
我发现将编译好的cuda目标代码与g ++链接起来很麻烦。 尝试像这样编译它:
all:
nvcc cudafile.cu mainfile.cpp -o executable
clean: rm -rf *.o