Cuda优化技术

sca*_*man 1 cuda gpgpu

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

我知道"一些"优化技术(使用共享memroy,纹理,zerocopy ......)

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

Edr*_*ric 5

您应该阅读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在我的应用程序中,我发现,使用静态分配的共享内存比使用动态分配的内存更快(内核<<< blocks,threads,sharedMemSize >>>())所有这些都在最佳实践中描述指南. (2认同)