只是为了看看CUDA生成了什么样的代码我喜欢除了目标文件之外还要编译成ptx。由于我的一些循环展开可能需要一段时间,我希望能够编译 *.cu
→*.ptx
→*.o
而不是浪费时间我正在做的 *.cu
→*.ptx
和 *.cu
→*.o
。
只需将-ptx
添加到nvcc *.cu
行即可获得所需的ptx输出。
使用ptxas -c
将*.ptx
编译为*.o
有效,但在我的可执行文件链接中导致错误:Relocations in generic ELF (EM: 190)
。
尝试使用*.ptx
编译nvcc
会失败静默,不会输出任何内容。
我需要将一些选项传递给ptxas
吗?我应该如何使用单独的编译通过ptx正确编译?或者,我可以告诉nvcc
保留ptx吗?
答案 0 :(得分:5)
或者,我可以告诉nvcc保留ptx吗?
是的,您可以告诉nvcc keep all intermediate files,其中一个是.ptx
文件。
nvcc -keep ...
保留所有中间文件有点乱,但我相信你可以提出一个脚本来整理,并且只保存你想要的文件。