我正在尝试使用CUDA确定我的PC带宽。我有一个750M bord,我的理论带宽为90 GB,规格提到80GB。我从nvidia网站https://devblogs.nvidia.com/parallelforall/how-implement-performance-metrics-cuda-cc/尝试了一个简单的算法。 我已经更改了单精度和双精度的代码,我得到了这个结果:
单精度(浮点):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);
双重精确度的结果大于单一精确度:
单精度(浮点):30 GB / s
双精度:45 GB / s
答案 0 :(得分:0)
使用这种方法,您可以进行32位加载。您的卡的内存管理单元没有必要的资源(飞行中的请求 - 请参阅Little Law和内存延迟this技术报告似乎涵盖它),以便带宽以完全性能执行。
您希望使用128位负载(例如使用float4)来最大化您的带宽,或者至少为float2,并为每个线程执行多个操作。