1

我对内存带宽的理解是使用 , 来报告SI unitskilo=10^3尽管mega=10^6 etc内存大小显然以 2^n 格式报告)。

CUDA bandwidthTest 样本似乎在炫耀这一点。下面的示例直接来自 SDK 示例,其中 memSize 是描述数组大小的整数,默认为 32*2^20,MEMCOPY_ITERATIONS 是整数。

假设经过的时间是 1000 毫秒并且 MEMCOPY_ITERATIONS=1,结果将是 64MB/s,但 MB 的形式是 2^20。我的假设是否正确,如果正确,是否接受带宽的二进制表示法?

我以为不是。

//calculate bandwidth in MB/s
bandwidthInMBs = 2.0f * (1e3f * memSize * (float)MEMCOPY_ITERATIONS) /
                 (elapsedTimeInMs * (float)(1 << 20));

编辑:如果有人再次搜索此内容,则以 SI MB/s 报告的更改的 bandwidthTest 在这里,改编自 CUDA 5.5 SDK 并包括 Visual Studio 项目。

4

1 回答 1

1

bandwidthTest 以二进制 MB/s 给出结果?

是的。

是否接受带宽的二进制表示法?

也许不是。

(这是我能找到的唯一两个问题。)

由于二进制兆字节大于 SI 兆字节,因此如果根据 SI 单位解释结果,则bandwidthTest 示例代码似乎报告不足。作为示例代码,它的主要目的是教育和指导,而不是符合某些定义。

你有源代码——你可以让你的版本报告你想要的任何方式。

于 2013-08-24T17:04:27.967 回答