2010-06-22 97 views
1

我已经编写了一个CUDA代码来解决NP-Complete问题,但性能并不像我怀疑的那样。Cuda优化技术

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

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

回答

5

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

这与相关的“优先级”多种不同性能的技巧。下面是一些重中之重提示:

  1. 使用设备的有效带宽弄清什么对性能的上限应该是你的内核
  2. 尽量减少主机和设备之间的数据传输 - 即使这指的是不高效的有
  3. 合并所有的存储器访问
  4. 宁可全局存储器存取共享存储器访问
  5. 避免代码执行单经,因为这内分支序列化的螺纹装置上做计算
+2

6.避免银行冲突。 PS 以我应用,我发现,静态分配的共享内存的使用速度更快,比动态分配的存储器的使用(与内核<<<块,线程,sharedMemSize >>>()) 所有这在最佳实践指南中进行了介绍。 – LonliLokli 2010-06-22 09:38:31

2

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