如何获取CUDA内核的汇编代码?

Pse*_*che 7 c assembly cuda gpgpu nvidia

我有一些我在OpenCL和CUDA中编写的内核.在AMD Profiler中运行OpenCL程序时,它允许我查看内核的汇编代码.我想将它与CUDA内核的汇编代码进行比较,以比较两种语言之间的编译器优化.我一直在玩Nvidia Profiler,但我仍然对如何获取内核的汇编代码感到茫然.怎么去做这个?

Pse*_*che 3

正如 Turboscrew 所提到的,最接近 CUDA 汇编的是 PTX 代码。我认为在这个答案中添加实际生成 PTX 代码的方法会更有用。

这可以通过以下方式生成:

nvcc -ptx -o kernel.ptx kernel.cu

kernel.cu源文件在哪里,kernel.ptx目标 PTX 文件在哪里。

另外,这里是 NVidia 的 PTX 文档的链接:

http://docs.nvidia.com/cuda/parallel-thread-execution/index.html

如果您有一些装配知识,那么大部分都是相当简单的。有一些特殊的函数可以使用,但查找它们以获取更多详细信息会很有用。

  • “最接近 CUDA 汇编的是 PTX 代码”是错误的。可以使用[cuobjdump工具](http://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#axzz36AnCbaAh)直接检查程序集。 (8认同)