1

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

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

CUDA 程序员应该知道的最重要的优化技术是什么?

4

2 回答 2

5

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

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

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

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

于 2011-12-06T01:25:42.827 回答