我正在使用Capabilities 3.5,CUDA 5和VS 2010(显然是Windows)。
我有兴趣阅读已编译的代码,以便更好地理解我的C代码更改的含义。
答案 0 :(得分:7)
通常,要创建特定.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开始。我想你想做什么,就够了。