1

所以我想知道如何计算总内存有效带宽:

cublasSdot(handle, M, devPtrA, 1, devPtrB, 1, &curesult);

该功能低于cublas_v2.h

该函数在 0.46 毫秒内运行,向量是10000 * sizeof(float)

我有((10000 * 4) / 10^9 )/0.00046 = 0.086 GB/s吗?

我想知道它是因为我不知道 cublasSdot 函数内部是什么,也不知道它是否有必要。

4

2 回答 2

3

在您的情况下,输入数据的大小为 10000 * 4 * 2,因为您有 2 个输入向量,输出数据的大小为 4。有效带宽应约为 0.172 GB/s。

基本上只做cublasSdot()计算。配置文件结果显示cublasSdot()调用 2 个内核来计算结果。如果指针模式为 ,则还会调用额外的 4 字节设备到主机内存传输CUBLAS_POINTER_MODE_HOST,这是 cublas lib 的默认模式。

于 2013-02-19T03:26:32.603 回答
0

如果内核时间以毫秒为单位,则需要乘以 1000。结果为 86 GB/s。

作为示例,请参阅 NVIDIA 为 Matrix Transpose 提供的示例,网址为http://docs.nvidia.com/cuda/samples/6_Advanced/transpose/doc/MatrixTranspose.pdf

在最后一页上存在整个代码。计算有效带宽的方式是 2.*1000*mem_size/(1024*1024*1024)/(Time in ms)

于 2015-05-07T11:58:24.127 回答