Gcc 使用PTX输出的NVCC单独编译

Gcc 使用PTX输出的NVCC单独编译,gcc,cuda,nvcc,ptxas,Gcc,Cuda,Nvcc,Ptxas,为了了解CUDA正在生成什么样的代码,除了一个对象文件之外,我还想编译成ptx。由于我的一些循环展开可能需要相当长的时间,我希望能够编译*.cu→*.ptx→*.o而不是同时使用*.cu→*.ptx和*.cu→*.o,我目前正在做 只需将-ptx添加到nvcc*.cu行,即可获得所需的ptx输出 使用ptxas-c编译*.ptx到*.o可以工作,但会在我的可执行文件链接中导致错误:在通用ELF(EM:190)中重新定位 尝试使用nvcc编译*.ptx失败,没有输出任何内容 是否有一些选项需要传

为了了解CUDA正在生成什么样的代码,除了一个对象文件之外,我还想编译成ptx。由于我的一些循环展开可能需要相当长的时间,我希望能够编译
*.cu
→<代码>*.ptx→
*.o
而不是同时使用
*.cu
→<代码>*.ptx
*.cu
→<代码>*.o
,我目前正在做

只需将
-ptx
添加到
nvcc*.cu
行,即可获得所需的ptx输出

使用
ptxas-c
编译
*.ptx
*.o
可以工作,但会在我的可执行文件链接中导致错误:
在通用ELF(EM:190)中重新定位

尝试使用
nvcc
编译
*.ptx
失败,没有输出任何内容

是否有一些选项需要传递到
ptxas
?我应该如何通过单独编译的ptx正确编译?或者,我可以告诉nvcc保留ptx吗

或者,我可以告诉nvcc保留ptx吗

是的,您可以告诉nvcc,其中之一是
.ptx
文件

nvcc -keep ...
保留所有中间文件有点混乱,但我相信你可以想出一个脚本来整理东西,只保存你想要的文件