cuda编程(5):优化理论

一、优化原则

  1. 最大化算术强度;
  2. 减少内存操作花费时间;
  3. 合并全局内存访问;
  4. 避免线程发散;
  5. 把高频使用数据移动到共享内存;

二、纵向

优化的流程与步骤一般包括如下步骤:

1.1 分析

分析程序的瓶颈、什么地方需要做并行、能够提供资源。不要依赖直觉,尽量借助工具:

  1. gProf
  2. VTune
  3. VerySleepy

1.2 并行

这个阶段考虑使用并行库(OpenMP是CPU上的并行,OpenACC)、指令、选择好算法等。

1.3 优化

测试程序的内存、带宽和占用率等指标是否达到硬件或者贴近硬件的极限。最重要的是,是否满足要求。

1.4 部署

在预算内考虑更加符合场景的硬件等设备。

三、横向

在考虑cpu与GPU还是所有不同。考虑CPU运行效率时一般只考虑时间效率,但是考虑GPU时,除了时间效率,还有能够并行的程度。如下面的GPU例子中的堆排序,堆排序对于CPU是一个较好的排序算法,但是对于GPU却不是,因为它并行程度很低。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章