我正在为3d应用程序生成一个插件,这个插件使用该应用程序SDK
在正常情况下“个人测试项目”,我将.cu文件分开并将其项目类型设置为CUDA C / C ++,将.cpp文件设置为项目类型C / C ++编译器
这里我希望整个代码都在.cpp文件中并编译它没有问题,
我也想制作代码(二进制)以便我可以隐藏ptx(或内核)
答案 0 :(得分:1)
为什么要将CUDA代码放在.cpp文件中并不完全清楚。如果原因是由于您使用的SDK的某些要求,并且您不想使用nvcc
,则无法使用。
如果您只是想允许.cpp文件包含设备代码并通过nvcc
而不是直接访问主机编译器,则可以使用-x cu
上的nvcc
选项编译命令:
nvcc -x cu t264.cpp -o t264
上面的命令将生成相同的可执行文件,就像您执行此操作一样:
nvcc t264.cu -o t264
(假设t264.cu
和t264.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。