2016-11-10 139 views
0

我試圖用CUDA確定我的PC帶寬。我有一個750M bord,我的理論帶寬是90 GB,規格中提到像80GB。我已經嘗試了nvidia網站https://devblogs.nvidia.com/parallelforall/how-implement-performance-metrics-cuda-cc/的簡單算法。 我有改變單精密度和雙精密度的代碼和我有這個結果:單精度CUDA帶寬和雙精度帶寬

單精密度(浮點):30GB/s的

雙精密度:26GB/s的

單精密度的帶寬計算如下:

printf("Effective Bandwidth (GB/s): %fn", N*4*3/milliseconds/1e6); 

如果我嘗試,使之成爲雙精密度(8個字節):

printf("Effective Bandwidth (GB/s): %fn", N*8*3/milliseconds/1e6); 

爲雙精密度的rezult是更大然後單精密度:

單精密度(浮點):30 GB/s的

雙精密度:45 GB/s的

回答

0

使用這種方法,你是使32位負載。您的卡的內存管理單元沒有必要的資源(請求在飛行中 - 請參閱小法律和內存延遲this技術報告似乎涵蓋了它)帶寬在完整性能下執行。

您想要使用128位加載(例如使用float4)來最大化您的帶寬或至少float2,併爲每個線程執行多個操作。

+0

謝謝。非常好的材料。 – adi94

+0

如果這回答你的問題,也許你想標記爲這樣? –