本人在看《深入浅出谈CUDA》时,看到第一个例子,用一个线程计算时,在 GPU 上执行的部份大约花费 640M 个频率,这个640M个频率是如何求解的?
原文是:
在 GeForce 8800GT 上面,在 GPU 上执行的部份(称为 “kernel”)大约花费 640M 个频率。GeForce 8800GT 的执行单元的频率是 1.5GHz,因此这表示它花费了约 0.43 秒的间。1M 个 32 bits 数字的数据量是 4MB,因此,这个程序实际上使用的内存带宽,只有 9.3MB/s 左右!
我看出9.3=4Mb/0.43s,但是为什么是4Mb这么除呢?
请高手赐教,非常感谢!
这是有效带宽
其计算方式就是数据传输量除以计算时间
640M/1.5G=0.4267
[ 本帖最后由 yyfn风辰 于 2010-6-26 22:07 编辑 ]
程序运行640M个GPU sp时钟周期,GPU sp运行在1.5GHz
程序运行的时钟周期数是测得的,而不是计算出来的
640M cycles /1.5(G cycles/Sec) = 0.43 Sec
4MByte / 0.43 Sec = 9.3 MB/Sec 有效带宽
[ 本帖最后由 NvidiaCTC 于 2010-6-26 23:16 编辑 ]
非常感谢解答!
还有个问题是我不理解,为什么是1M个数据量4Mb除以运行时间去求有效带宽,而不是1G个数据量,或者其他,是公式吗?还是其他原因?
非常感谢!明白了!
还有个小问题我不理解,为什么是1M个数据量4Mb除以运行时间去求有效带宽,而不是1G个数据量,或者其他,是公式吗?还是其他原因?
是公式,4M是1M个32位的数据量,要注意的是要包含读写,也就是说一次读一次写算两次。
谢谢,非常感谢,小弟是个新手,对计算机方面了解的太少了,明白了!
1M个数据量,每个数据量32位占4个字节,所以是4MB了