2011-07-04 37 views
1

如何使用並行接口瞭解非合併讀/寫和銀行衝突的數量?
此外,當我使用nsight時,我應該看的是一個分析器?什麼是可能導致我的計劃放慢速度的重要領域?使用Nsight確定銀行衝突併合並

回答

1

我不使用NSight,但你會看到一個探查典型的領域基本上是:

  • 內存消耗
  • 時間花費在功能

更具體地說,使用CUDA時,您會注意GPU的佔用情況。
其他有趣的值是編譯器設置本地變量的方式:在寄存器或本地內存中。

最後,您將檢查花費在從GPU傳回數據的時間,並將其與計算時間進行比較。

1

對於銀行衝突,您需要觀看warp serialization。見here

here is a discussion關於監控內存合併< - 基本上你只需要觀看Global Memory Loads/Stores - Coalesced/Uncoalesced並標記Uncoalesced

0

M. Tibbits基本上回答了你需要知道的銀行衝突和非合併內存交易。

關於什麼是重要的領域/事情(使用Nsight分析器時),可能會導致我的計劃,以減緩在看這個問題:

  1. 使用應用程序或系統跟蹤,以確定您是否CPU綁定,內存綁定或內核綁定。這可以通過查看時間表來完成。

a。 CPU綁定 - 你會看到大面積沒有內核或內存拷貝發生,但你的應用程序線程(線程狀態)是綠色

b。內存限制 - 內存傳輸進出設備時阻塞內核。你可以通過查看內存行來看到這一點。如果您在Memory Copies中花費了大量時間,那麼您應該考慮使用CUDA流來處理您的應用程序。這可以讓你重疊內存傳輸和內核。在更改代碼之前,您應該比較傳輸和內核的持續時間,並確保獲得性能提升。

c。內核綁定 - 如果大部分應用程序時間都花在等待內核完成上,那麼您應該切換到「Profile」活動,重新運行應用程序,並開始收集硬件計數器,以瞭解如何使內核的實際執行時間更快。