2016-11-10 137 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

如果这回答你的问题,也许你想标记为这样? –