2011-10-20 27 views
1

我認爲我的內核是內存綁定的(因爲大多數GPGPU代碼是內存綁定的),但我實際上並不知道。我怎麼能爲自己找到它。可能必須使用視覺輪廓儀,因爲它取決於使用的GPU。如何找出內核是內存綁定還是計算綁定?

如果在CUDA編程指南或其他NVIDIA文檔中對其進行了說明,請不要猶豫,只是發佈帶有頁碼的鏈接,以便我自己閱讀它。

澄清

我寧願是一般性的「規則」如何確定的限制因素,但在我的特殊情況下,你可以找到我的內核這裏的細節:Using `overlap`, `kernel time` and `utilization` to optimize one's kernels

+0

您是否檢查過CUDA佔用率計算器的內核啓動配置和屬性?肯定會嘗試。然後,分析也是一個好主意。源代碼分析也很有用......你的算術強度是多少?您的全局內存訪問是否合併?等等。 – Patrick87

回答

3

presentation從NVIDIA會談關於通過修改源代碼來選擇性地禁用內核中的內存訪問和算術運算,以確定其中一個是否限制了您的性能。

1

一個很好的特技無需任何修改源代碼可用於與使用「--use_fast_math」標誌可以很容易地增加\減少計算壓力計算能力2.0及以上(基於answer here

編譯的代碼。

  • 如果設置此標誌會帶來很大的加速,那麼這將表示一個計算限制的內核。

  • 如果設置此標誌幾乎沒有加速,這將表明一個平衡\內存綁定的內核。

0

雖然我會在一個答案,即使有一個接受的答案,這個問題是舊的。

我的代碼有類似的問題,雖然當時我不知道它。 我運行了Nvidia Visual Profiler(nvvp)並分析了我的程序。我發現Profiler發現我的程序在某種程度上受到了限制,並提出了一些建議。

一個偉大的工具,如果你不確定從哪裏開始使用。