Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cuda 如何阅读PTX?_Cuda - Fatal编程技术网

Cuda 如何阅读PTX?

Cuda 如何阅读PTX?,cuda,Cuda,我正在使用功能3.5、CUDA 5和VS 2010(显然还有Windows) 我对阅读编译后的代码感兴趣,以便更好地理解C代码更改的含义 我在VS中需要什么配置来编译代码以提高可读性(将编译设置为PTX是否足够?) 我需要什么工具对生成的PTX进行反向工程才能读取它 通常,要创建特定.cu文件的ptx版本,命令如下: nvcc -ptx mycode.cu 这将生成一个mycode.ptx文件,其中包含与您使用的文件相对应的ptx代码。在ptx中使用-src选项可能也很有帮助: nvcc -

我正在使用功能3.5、CUDA 5和VS 2010(显然还有Windows)

我对阅读编译后的代码感兴趣,以便更好地理解C代码更改的含义

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

通常,要创建特定.cu文件的ptx版本,命令如下:

nvcc -ptx mycode.cu
这将生成一个
mycode.ptx
文件,其中包含与您使用的文件相对应的ptx代码。在ptx中使用
-src
选项可能也很有帮助:

nvcc -ptx -src-in-ptx mycode.cu
这将把源代码行和它们对应的ptx行穿插在一起

要理解ptx,请从

请注意,编译器可能会生成与源代码不完全对应的ptx代码,或者由于优化而导致混淆。您可能希望(也许是为了获得洞察力)也使用
-G
开关编译一些测试用例,以查看非优化版本的比较情况

由于windows环境可能因机器而异,我认为如果您只查看特定版本的
msvc++
用于调用
nvcc
(编译时查看一个项目的控制台输出)的路径,并使用该路径预加我在上面给出的命令,就更容易了。我不确定直接将其构建到VisualStudio中是否有多大用处,除非您有从ptx编译到可执行文件的特殊需要。也有一些是以某种方式与ptx有关的

还要注意完整性,ptx实际上不是由设备执行的(但通常非常接近)。它是一种中间代码,可以通过
nvcc
或也存在于GPU驱动程序中的编译器的一部分,将其重新定位到一个系列中的设备。为了查看设备执行的实际代码,我们使用可执行文件而不是源代码,提取机器装配代码的工具是:

cuobjdump -sass mycode.exe
如果需要,关于预先设置适当路径的类似警告。我将从ptx开始。我想你想做的已经足够了