0
点赞
收藏
分享

微信扫一扫

[10] CUDA程序性能的提升 与 流

CUDA程序性能的提升 与 流

1. CUDA程序性能的提升

  • 在本节中,我们会看到用来遵循的基本的一些性能来提升准则,我们会逐一解释它们

1.1 使用适当的块数量和线程数量

  • 研究表明,如果块的数量是 GPU 的流多处理器数量的两倍,则会给出最佳性能,不过,块和线程的数量与具体的算法实现有关
  • GPU 的流多处理器则可以通过获取设备属性的方法获得

1.2 最大化数学运算效率

  • 数学运算效率的定义是,数学运算操作和访存操作的比率

  • 常见的内核执行有3个瓶颈:卡在计算瓶颈上、卡在访存上和卡在延迟掩盖上:

    • 如果卡在计算上,则应当考虑将一些计算等效的转换成访存,例如一些运算可以尝试转换成存储器查表
    • 如果卡在访存上,则可以将一些访存转换成对应的计算,例如一些数据不是重新载入,而是直接计算出来
  • 缓存的使用也有助于减少存储器访问时间,最终一定程度地辅助达成减少(内核的)全局内存的带宽需求就能减少花费在访存上的时间的目的。高效的使用存储器对提升CUDA程序性能非常重要,当显存带宽是瓶颈的时候,减少带宽需求有助于提升性能

1.3 使用合并的或跨步式的访存

  • 合并访存大致意味着线程束(warp)整体读取或者写入连续的存储器区域,这种对存储器的访问对GPU来说是最高效的。
  • 如果 warp 的线程固定步长地离散式访问某段存储器区域,这叫做跨步式访存,
举报

相关推荐

0 条评论