我编写了一些OpenCL和CUDA内核。在AMD分析器中运行OpenCL程序时,它允许我查看内核的汇编代码。我想将此与CUDA内核的汇编代码进行比较,以比较两种语言之间的编译器优化。我一直在使用Nvidia分析器进行尝试,但仍然不知道如何获得我的内核的汇编代码。如何进行此操作?
我编写了一些OpenCL和CUDA内核。在AMD分析器中运行OpenCL程序时,它允许我查看内核的汇编代码。我想将此与CUDA内核的汇编代码进行比较,以比较两种语言之间的编译器优化。我一直在使用Nvidia分析器进行尝试,但仍然不知道如何获得我的内核的汇编代码。如何进行此操作?
nvcc -ptx -o kernel.ptx kernel.cu
,其中kernel.cu
是源文件,kernel.ptx
是目标PTX文件。此外,以下是NVidia的PTX文档链接:http://docs.nvidia.com/cuda/parallel-thread-execution/index.html。如果您了解一些汇编知识,则大部分内容都很简单明了。但在使用某些特殊函数时,查找更多详细信息可能会很有用。nvcc
的作用。它将 .cu 源代码编译为 SASS。将其编译为二进制格式(如可执行文件),然后在可执行文件上使用 cuobjdump
实用程序。在 cuda
标签中有许多关于此问题的问题。如果您想查看寄存器使用情况,还有其他二进制实用程序可以帮助解决。 - Robert Crovella你想阅读PTX吗?你并不能更靠近汇编。NVIDIA 没有发布其 GPU 的汇编代码。该“汇编”是 PTX,由驱动程序中的字节码解释器执行的“伪汇编”。