Cuda PTX代码性能

Cuda PTX代码性能,cuda,gpgpu,ptx,Cuda,Gpgpu,Ptx,我知道CUDA(不错),但我不知道,所以我的问题是: 学习ptx代码是否有助于提高gpu(CUDA)的性能 密码 如果是,是否有一种方法可以编写ptx代码,并与 CUDA代码可以提高性能吗 根据我个人的经验,PTX有助于调试/检查一个不寻常的问题。然而,我只做过一次。另外,请记住,PTX只是编译器生成的即时代码,而不是在GPU上执行的实际汇编语言 如果您真的想查看机器代码,它是在PTX之后组装的,NVIDA提供了cuobjdump。我认为PTX有很多有用的信息和良好的文档,所以学习它会有所帮

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

  • 学习ptx代码是否有助于提高gpu(CUDA)的性能 密码
  • 如果是,是否有一种方法可以编写ptx代码,并与 CUDA代码可以提高性能吗

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

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

  • 最小化内存事务,特别是设备/主机之间的数据传输
  • 合并全局内存访问
  • 通过内核配置提高设备利用率
  • 避免翘曲发散

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

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

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

  • 最小化内存事务,特别是设备/主机之间的数据传输
  • 合并全局内存访问
  • 通过内核配置提高设备利用率
  • 避免翘曲发散

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

非常感谢你的回答。实际上,我读过一些分析ptx代码的文章,这些文章将不同代码之间的性能差异贡献给编译器重新排列的ptx指令。我认为自己做这样的改变来提高绩效可能是个好主意。我不知道这是否是人们经常做的事情,或者我应该直接去看机器代码,我认为这会更加困难。@SullivanRisk分析PTX代码几乎从来没有用过,因为它只是一个中间表示,由优化编译器组件
ptxas
转换成机器代码。另一方面,分析机器代码(SASS)与分析任何刀具链生成的装配代码一样有用。使用内联PTX(就像在CPU上使用内联汇编语言一样)有助于提高无法用高级语言(例如)高效表达的计算性能。非常感谢您的回答。实际上,我读过一些分析ptx代码的文章,这些文章将不同代码之间的性能差异贡献给编译器重新排列的ptx指令。我认为自己做这样的改变来提高绩效可能是个好主意。我不知道这是否是人们经常做的事情,或者我应该直接去看机器代码,我认为这会更加困难。@SullivanRisk分析PTX代码几乎从来没有用过,因为它只是一个中间表示,由优化编译器组件
ptxas
转换成机器代码。另一方面,分析机器代码(SASS)与分析任何刀具链生成的装配代码一样有用。使用内联PTX(就像在CPU上使用内联汇编语言一样)有助于提高无法用高级语言(例如)高效表达的计算性能。