1
我想知道我的CUDA內核在內存帶寬利用率方面的表現如何。我在帶有ECC的Tesla K40c上運行它們。 bandwidthTest
實用程序給出的結果是否與可達到的峯值很接近?否則,如何編寫一個類似的測試來尋找峯值帶寬?CUDA帶寬測試獲得可達峯值
我的意思是設備內存帶寬。
我想知道我的CUDA內核在內存帶寬利用率方面的表現如何。我在帶有ECC的Tesla K40c上運行它們。 bandwidthTest
實用程序給出的結果是否與可達到的峯值很接近?否則,如何編寫一個類似的測試來尋找峯值帶寬?CUDA帶寬測試獲得可達峯值
我的意思是設備內存帶寬。
帶寬測試的源代碼包含在CUDA SDK中,因此您可以直接查看它。 bandwidthTest示例執行設備與主機,主機與設備,設備與設備(傳輸卡上的內存)之間傳輸時間的測試。
這是一個內存傳輸的實際執行,但它需要的幾件事情的優勢:
在執行內存傳輸時使用內核執行實際工作可能會導致性能下降。但是,您可以參考帶寬測試代碼並將其用作改進傳輸的指南。考慮固定內存,異步傳輸或不需要顯式傳輸數據的較新的共享內存方法。另外請記住,bandwidthTest只計算內存周圍的批量傳輸,而不是真正衡量共享內存等事情。
最終的性能將在很大程度上取決於內核以及您正在執行的內存傳輸的數量和大小。
bandwidthTest足夠好,你不能提高帶寬太多。等價物是一個簡單的複製內核。你想要做的是確保在內核中複製多個數據值。例如,如果處理3d數據集,則使用2d線程塊來平鋪空間,並且內核在z維上具有for循環。 – angainor