2013-07-02 69 views
0

我在兩臺不同的機器上編譯的相同CUDA內核的計算時間差異約爲3-4倍。兩個版本都運行在同一臺機器和GPU設備上。解釋差異的直接結論是不同的編譯器設置。雖然沒有一個完美的設置,並且調整應該根據內核來定製,但我不知道是否有明確的指導方針來幫助選擇正確的設置。我使用Visual Studio 2010.謝謝。visual studio編譯器設置對CUDA內核性能的影響

回答

2
  1. 如果您想要最快的性能,請在發佈模式而不是調試模式下編譯。傳遞給nvcc編譯器的-G開關通常會對GPU代碼性能產生負面影響。
  2. 通常建議爲正在編譯的GPU選擇正確的體系結構。例如,如果您具有cc 2.1功能的GPU,請確保將設置(GPU代碼設置中的sm_21)傳遞給編譯器。有一些反例的例子(例如編譯cc 2.0似乎跑得更快等),但作爲一般性建議,這是最好的。
  3. 使用最新版本的CUDA(編譯器)。當使用GPU庫(CUFFT,CUBLAS等)時,這一點尤其重要(是的,這實際上並不是一個編譯器設置)
+0

雖然很明顯,但我也會說編譯器優化很重要('O1','O2 ',...):-) – JackOLantern

+0

我同意,雖然我認爲這主要是一個主機編譯器標誌,而且問題似乎是在詢問CUDA內核的性能。在我有限的測試中,我沒有看到ptx代碼生成從'-O0'到'-O3'的顯着差異,儘管我肯定有興趣證明是錯誤的。如果我們正在談論VS代碼的主機編譯器優化,那麼可能還有其他許多優化。 –

+0

謝謝@RobertCrovella,-G旗是一個很好的觀點。 – ramino