测量CUDA的有效带宽

时间:2013-02-19 01:23:21

标签: performance cuda cublas

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

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

该函数低于cublas_v2.h

该函数在0.46 ms内运行,向量为10000 * sizeof(float)

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

我很想知道它,因为我不知道cublasSdot函数里面有什么,我不知道它是否是必要的。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

如果内核时间以ms为单位,则需要乘法因子1000。 这导致86 GB / s。

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

在最后一页上存在整个代码。计算有效带宽的方式是2. * 1000 * mem_size /(1024 * 1024 * 1024)/(以毫秒为单位的时间)