應用簡介:
Profile:
許多代碼使用相對較少的代碼完成了大部分工作。 使用探查器,開發人員可以識别這些熱點,并開始編譯并行化候選清單。
建立配置檔案:
有很多可能的方法來分析代碼,但在所有情況下,目标都是一樣的:識别應用程式花費其大部分執行時間的函數或函數。
(高優先級:為了最大限度地提高開發人員的生産力,應用程式可以确定熱點和瓶頸。)
任何分析活動最重要的考慮是確定工作負載是現實的 - 即從測試中獲得的資訊和基于該資訊的決定與真實資料相關。 使用不切實際的工作負載可能會導緻次優的結果和浪費的工作量,它們會導緻開發人員針對不切實際的問題大小進行優化,并導緻開發人員專注于錯誤的功能。
有許多工具可用于生成配置檔案。 以下示例基于gprof,它是GNU Binutils集合中用于Linux平台的開源分析器。

識别熱點:
在上面的例子中,我們可以清楚地看到函數genTimeStep()占用了應用程式總運作時間的三分之一。 這應該是我們第一個并行化的候選功能。 了解縮放比例讨論了我們可能從這種并行化中獲得的潛在收益。
值得注意的是,上面例子中的其他幾個函數也占用了整個運作時間的很大一部分,比如calcStats()和calcSummaryData()。 并行化這些功能也會增加我們的加速潛力。 但是,由于APOD是一個循環過程,是以我們可能選擇在随後的APOD過程中将這些功能并行化,進而将任何給定過程中我們的工作範圍限制為較小的一組增量更改。
了解縮放(scaling):
通過在CUDA上運作,應用程式将實作的性能優勢的數量完全取決于它可以并行化的程度。 無法充分并行化的代碼應該在主機上運作,除非這樣做會導緻主機和裝置之間的過度傳輸。
高優先級:為了從CUDA中獲得最大收益,請首先着眼于尋找并行化順序代碼的方法。
通過了解應用程式如何擴充,可以設定期望值并計劃增量并行政策。 強大的縮放和Amdahl定律描述了強大的縮放,這使我們能夠為固定問題大小的加速設定上限。 弱縮放和Gustafson定律描述了弱縮放,其中通過增大問題大小來實作加速。 在許多應用中,強弱比例的組合是可取的。
阿姆達爾定律是計算機系統設計的重要定量原理之一,于1967年由IBM360系列機的主要設計者阿姆達爾首先提出。該定律是指:系統中對某一部件采用更快執行方式所能獲得的系統性能改程序度,取決于這種執行方式被使用的頻率,或所占總執行時間的比例。阿姆達爾定律實際上定義了采取增強(加速)某部分功能處理的措施後可獲得的性能改進或執行時間的加速比。簡單來說是通過更快的處理器來獲得加速是由慢的系統元件所限制。
Gustafson 定律
–Gustafson假設随着處理器個數的增加,并行與串行的計算總量也是可以增加的。Gustafson定律認為加速系數幾乎跟處理器個數成正比,如果現實情況符合Gustafson定律的假設前提的話,那麼軟體的性能将可以随着處理個數的增加而增加。