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