【问题标题】:PTX code performancePTX 代码性能
【发布时间】:2016-07-17 14:57:24
【问题描述】:

我知道 CUDA(还不错),但我不知道 PTX,所以我的问题是:

  • 学习ptx代码是否有助于提高gpu的性能(CUDA) 代码?
  • 如果是的话,有没有办法写一个ptx代码,可以结合 CUDA 代码来提高性能?

【问题讨论】:

    标签: cuda gpgpu ptx


    【解决方案1】:

    根据我的个人经验,PTX 有助于调试/检查一个重要的问题。然而,我只做过一次。另外,请记住,PTX 只是编译器生成的直接代码,不是在 GPU 上执行的实际汇编语言。

    如果你真的想看机器码,它是在 PTX 之后组装的,NVIDA 提供了cuobjdump。我认为 PTX 有很多有用的信息和良好的文档,所以学习它会有所帮助。但是,CUDA 的一般优化策略包括:

    • 尽量减少内存事务,尤其是设备/主机之间的数据传输
    • 合并全局内存访问
    • 通过内核配置提高设备利用率
    • 避免扭曲发散

    对于第二个问题,是的,您可以通过inline PTX 在 CUDA 中编写 PTX。不过我从来没有这样做过。

    【讨论】:

    • 非常感谢您的回答。实际上,我阅读了分析 ptx 代码的论文,并将不同代码之间的性能差异贡献给编译器重新排列的 ptx 指令。我认为自己进行此类更改以提高性能可能是个好主意。不知道这是人家常做的事情,还是直接去机器码,我觉得会比较难。
    • @SullivanRisk 分析 PTX 代码几乎没有用处,因为它只是由优化编译器组件 ptxas 转换为机器代码的中间表示。另一方面,分析机器代码 (SASS) 的用处与分析任何工具链生成的汇编代码的用处相同。使用内联 PTX(就像在 CPU 上使用内联汇编语言一样)有助于提高在高级语言中不易有效表达的计算的性能(例如this answer)。
    猜你喜欢
    • 2012-09-09
    • 2012-07-08
    • 2012-07-17
    • 2012-11-28
    • 2016-01-30
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多