我想开始学习 PTX,我应该从哪里开始?有什么好书/资源可以做到这一点吗?
如果这可能有帮助,我已经知道 x86/x64 ASM(或多或少)
熟悉其他一些汇编语言会有所帮助。
权威参考是PTX 指南。虽然它作为指令集的参考手册,但它的可读性相当强,前 7 章左右从并行线程执行的相对基本介绍开始,描述所有概念。
您可能还对较短的文档感兴趣:
/usr/local/cuda/doc/pdf/Inline_PTX_Assembly.pdf
(在标准的 linux 安装上。在 Windows 上,只需搜索“Inline_PTX_Assembly.pdf”PTX ISA 3.2 文档也在那里)
本文档讨论了足够多的 PTX,以便您可以尝试一些小片段,而无需使用它构建完整的内核,如果您不想这样做的话。
您还应该注意可能有用的nvcc 选项-ptx
,例如生成 ptx 代码,-G
以消除大多数优化(这会使生成的 ptx 难以理解),并且-src-in-ptx
会将您的内核源代码行与生成的ptx,以进一步帮助您理解。
最后,请注意 PTX 实际上并不是机器运行的,尽管它接近它。PTX 是一个中间代码,它会经过一个额外的编译步骤来创建 SASS 代码,它是实际的机器代码。cuobjdump
您也可以使用实用程序 ( )检查 SASS 代码cuobjdump -sass mycode
,但 SASS 没有与 PTX 相同级别的文档。因此,您应该从了解 PTX 开始。