我正在使用功能3.5,CUDA 5和VS 2010(显然是Windows)。
我有兴趣阅读已编译的代码,以更好地理解C代码更改的含义。
最佳答案
通常,要创建特定.cu文件的ptx版本,命令为:
nvcc -ptx mycode.cu
这将生成一个
mycode.ptx
文件,其中包含与您使用的文件相对应的ptx代码。也可以使用-src-in-ptx
选项具有指导意义:nvcc -ptx -src-in-ptx mycode.cu
它将源代码行和它们对应的ptx行散布。
要理解ptx,请从documentation开始
请注意,由于优化,编译器可能会生成与源代码不完全对应的ptx代码,否则会造成混淆。您可能希望(也许会获得见识)也使用
-G
开关来编译一些测试用例,以查看未优化版本的比较。由于Windows环境可能因机器而异,所以我认为如果只查看特定版本的
msvc++
用于调用nvcc
的路径(编译时查看其中一个项目的控制台输出)并添加前缀就比较容易了。我上面用该路径给出的命令。我不确定尝试直接将其构建到Visual Studio中有很多实用程序,除非您有特殊的需要从ptx编译为可执行文件。还有一些sample codes以某种方式与ptx有关。还要注意完整性,ptx实际上不是设备执行的操作(但通常很接近)。它是一个中间代码,可以通过
nvcc
或也存在于GPU驱动程序中的一部分编译器重新定位到系列中的设备。要查看设备执行的实际代码,我们使用可执行文件而不是源代码,提取机器汇编代码的工具是:cuobjdump -sass mycode.exe
如果需要的话,关于添加合适路径的类似警告。我将从ptx开始。我认为您想要做的就足够了。