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卻不是,因爲它並行程度很低。

 

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