在VS 2010中将CUDA代码编译为C ++文件中的二进制文件

时间:2013-11-14 22:17:19

标签: c++ visual-studio-2010 cuda

我正在为3d应用程序生成一个插件,这个插件使用该应用程序SDK

在正常情况下“个人测试项目”,我将.cu文件分开并将其项目类型设置为CUDA C / C ++,将.cpp文件设置为项目类型C / C ++编译器

这里我希望整个代码都在.cpp文件中并编译它没有问题,

我也想制作代码(二进制)以便我可以隐藏ptx(或内核)

1 个答案:

答案 0 :(得分:1)

为什么要将CUDA代码放在.cpp文件中并不完全清楚。如果原因是由于您使用的SDK的某些要求,并且您不想使用nvcc,则无法使用。

如果您只是想允许.cpp文件包含设备代码并通过nvcc而不是直接访问主机编译器,则可以使用-x cu上的nvcc选项编译命令:

nvcc -x cu t264.cpp -o t264

上面的命令将生成相同的可执行文件,就像您执行此操作一样:

nvcc t264.cu -o t264

(假设t264.cut264.cpp是相同的文件。)

如果要删除ptx,可以这样编译:

nvcc  -gencode arch=compute_10,code=sm_10 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 ....

这将告诉nvcc创建一个包含sm_10,sm_20或sm_30设备的可执行二进制文件的fatbinary,但没有PTX。

相关问题