我对内存带宽的理解是使用 , 来报告SI units
(kilo=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 项目。