我正在使用功能3.5,CUDA 5和VS 2010(显然是Windows)。

我有兴趣阅读已编译的代码,以更好地理解C代码更改的含义。

  • 在VS中我需要什么配置来编译代码以提高可读性(将编译设置为PTX是否足够?)?
  • 我需要对生成的PTX进行反向工程以对其进行读取的什么工具?
  • 最佳答案

    通常,要创建特定.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开始。我认为您想要做的就足够了。

    08-26 19:51