【问题标题】:Cuda optimization techniquesCuda 优化技术
【发布时间】:2010-06-22 05:24:40
【问题描述】:

我编写了一个 CUDA 代码来解决一个 NP-Complete 问题,但性能并不像我想象的那样。

我知道“一些”优化技术(使用共享内存、纹理、零拷贝……)

CUDA 程序员应该了解哪些最重要的优化技术?

【问题讨论】:

    标签: cuda gpgpu


    【解决方案1】:

    您应该阅读 NVIDIA 的 CUDA 编程最佳实践指南:http://developer.download.nvidia.com/compute/cuda/3_0/toolkit/docs/NVIDIA_CUDA_BestPracticesGuide.pdf

    这有多个不同的性能提示以及相关的“优先级”。以下是一些最重要的提示:

    1. 使用设备的有效带宽来计算内核的性能上限
    2. 尽量减少主机和设备之间的内存传输 - 即使这意味着在设备上进行效率不高的计算
    3. 合并所有内存访问
    4. 首选共享内存访问而不是全局内存访问
    5. 避免在单个 warp 中执行代码执行分支,因为这会序列化线程

    【讨论】:

    • 6.避免银行冲突。 PS 在我的应用程序中,我发现使用静态分配的共享内存比使用动态分配的内存更快(使用内核>>())所有这些都在最佳实践中进行了描述指导。
    【解决方案2】:

    新的 NVIDIA Visual Profiler (v4.1) 支持自动性能分析,以识别应用程序中的性能改进机会。它还直接链接到其检测到的问题的最佳实践指南中最有用的部分。 Visual Profiler 作为 CUDA 工具包的一部分在 NVIDIA 的开发者网站上免费提供:http://www.nvidia.com/getcuda

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2013-09-13
      • 2017-06-25
      • 2012-08-30
      • 2017-02-18
      • 2011-09-24
      相关资源
      最近更新 更多