CUDA程序优化策略

一直在做CUDA程序,优化了CT重建中的FDK算法,又开始结合FDK和volume rendering做点工作。CUDA程序的优化至关重要,常见的优化策略,可以总结为:

  1. 将串行代码并行化。这里说简单也简单,说难也难,比如,对比for循环,就可以很简单的直接拆开,并行。但是,如果是迭代算法,比如Gauss-Seidel迭代求解,那么,就需要整理Gauss-Seidel算法,提起共同项,然后并行。
  2. 尽量减少Host和Device之间的数据拷贝。拷贝一次,尽量多用。
  3. 在配置kernel的时候,分配合理的thread个数和block个数,使得device的使用达到最大化,充分利用硬件资源。切记:thread不是越多越好。
  4. 保证global memory在访问的时候,memory coalesced。
  5. 尽可能的用share memory取代用global memory对数据进行访问。这个道理,你懂的。
  6. 同一个wrap中,注意尽量减少分支。同一wrap内的thread尽量做同样的事情。

学习一下,不错

学习了,正在研究

呵呵,胡文美教授和其它一些人好像写过一篇文章,就是说如何计算合理的使用线程的文章。可以去他的主,页下载的。。:slight_smile: