0

我正在为 3d 应用程序制作插件,该插件使用该应用程序 SDK

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

在这里,我想要 .cpp 文件中的整个代码并毫无问题地编译它,

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

4

1 回答 1

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创建一个 fatbinary,其中包含 sm_10、sm_20 或 sm_30 设备的可执行二进制文件,但不包含 PTX。

于 2013-11-14T23:40:32.380 回答