2012-10-15 60 views
2

我有一個CUDA應用程序是數據移動綁定(即從主機到設備的大內存,在內核中完成相對較少的計算)。在較早的GPU上,我是計算綁定的(例如QUADRO FX 5800),但是對於Fermi和Kepler架構,這不再是這種情況(對於我的優化代碼)。奇怪的結果CUDA SDK帶寬測試

我剛把代碼移到了GTX 680上,並且對計算性能的提升印象深刻,但對主機和GPU之間的帶寬似乎已經下降(相對於我的費米M20270)感到困惑。

簡而言之,當我運行罐裝SDK帶寬測試時,我在GTX 680上獲得〜5000 MB /秒,而在M2070上獲得〜5700 MB /秒。我認識到GTX是「只有玩家卡」,但GTX 680的規格看起來比M2070更令人印象深刻,除了總線寬度之外。

維基百科: M2070:102.4 GB /秒,GDDR3,512位總線寬度 GTX 680:192 GB /秒,GDDR5,256位總線寬度

我運行試驗罐頭以「 - -wc --memory = pinned「使用寫入組合內存。

我用這個測試得到的改進結果是通過我用優化的CUDA代碼獲得的結果進行鏡像的。不幸的是,我無法在同一臺機器上運行測試(並且只是切換視頻卡),但是我在舊機器和新機器上試用了GTX 680,並得到了相同的「降級」結果(相對於我登上M2070)。

任何人都可以證實,他們能夠實現與GTX 680的M2070 Quadro更高的吞吐量Memcopies?帶寬規格是否考慮到總線寬度?另一種可能性是,我沒有在GTX 680上正確/最佳地執行內存複製,但是在這種情況下,是否有一個帶寬測試補丁,以便它能夠顯示我將數據傳輸速度提高到了680到M2070?

謝謝。

+2

對於GTX 680和M2070,帶寬將受到PCI Express帶寬的限制,而不是與GPU卡上的內存有關。由於操作系統和系統架構(如不同的CPU/IOH設備)的差異,帶寬測試結果中可能存在系統間差異。測試不依賴於內存總線寬度,因爲在這兩種情況下,卡都有足夠的帶寬。除非您在所有方面使用相同的系統配置,否則您無法真正做到像這樣的蘋果對蘋果比較。 –

回答

3

正如Robert Crovella已經評論過的,您的瓶頸是PCIe帶寬,而不是GPU內存帶寬。

由於GTX 680支持的PCIe 3.0比M2070的PCIe 2.0接口帶寬高出一倍,因此GTX 680的性能可能會超過M2070兩倍。不過,你需要一塊支持PCIe 3.0的主板。

GPU內存的總線寬度本身並不是一個問題,即使對於GPU內存帶寬受限的程序也是如此。 Nvidia設法大大增加了GTX 680內存總線上使用的頻率,這相對於M2070的總線寬度減少了很多。

+0

我希望有人可以同時訪問2070和680,並可以在同一臺機器上單獨運行它們,並報告NVIDIA帶寬測試的輸出結果。我擔心680版的cudaMemcopies比2070版要慢得多。我的朋友(現在休假)在一臺全新的機器上(我懷疑是使用PCIe 3.0)上有一個680,我注意到它在cudaMemcopies上的速度很慢。 – chrisG

+0

M2070安裝在DELL刀片中,但仍通過PCIe連接。這會影響潛在的吞吐量嗎? 680在臺式電腦中。 – chrisG

+0

如果通過[PCIe擴展電纜](http://www.ameri-rack.com/ARC1-PELX16J1-C10_m.html)連接卡,可能會通過重播傳輸降低吞吐量。但是,您報告的M2070帶寬處於預期的上限,所以我認爲這不是問題。 – tera