【发布时间】:2016-07-17 14:57:24
【问题描述】:
我知道 CUDA(还不错),但我不知道 PTX,所以我的问题是:
- 学习ptx代码是否有助于提高gpu的性能(CUDA) 代码?
- 如果是的话,有没有办法写一个ptx代码,可以结合 CUDA 代码来提高性能?
【问题讨论】:
我知道 CUDA(还不错),但我不知道 PTX,所以我的问题是:
【问题讨论】:
根据我的个人经验,PTX 有助于调试/检查一个重要的问题。然而,我只做过一次。另外,请记住,PTX 只是编译器生成的直接代码,不是在 GPU 上执行的实际汇编语言。
如果你真的想看机器码,它是在 PTX 之后组装的,NVIDA 提供了cuobjdump。我认为 PTX 有很多有用的信息和良好的文档,所以学习它会有所帮助。但是,CUDA 的一般优化策略包括:
对于第二个问题,是的,您可以通过inline PTX 在 CUDA 中编写 PTX。不过我从来没有这样做过。
【讨论】:
ptxas 转换为机器代码的中间表示。另一方面,分析机器代码 (SASS) 的用处与分析任何工具链生成的汇编代码的用处相同。使用内联 PTX(就像在 CPU 上使用内联汇编语言一样)有助于提高在高级语言中不易有效表达的计算的性能(例如this answer)。