单精度CUDA带宽和双精度带宽

时间:2016-11-10 17:39:58

标签: nvidia

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

使用这种方法,您可以进行32位加载。您的卡的内存管理单元没有必要的资源(飞行中的请求 - 请参阅Little Law和内存延迟this技术报告似乎涵盖它),以便带宽以完全性能执行。

您希望使用128位负载(例如使用float4)来最大化您的带宽,或者至少为float2,并为每个线程执行多个操作。