我对内存带宽的理解是使用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为here,改编自CUDA 5.5 SDK并包含Visual Studio项目。
答案 0 :(得分:1)
bandwidthTest以二进制MB / s?
给出结果
是
是接受带宽的二进制表示法吗?
也许不是。
(那是我能找到的唯一两个问题。)
由于二进制兆字节大于SI兆字节,如果您根据SI单位解释结果,则bandwidthTest
示例代码似乎报告不足。作为示例代码,它的主要目的是教育和指导,而不是符合某些定义。
您拥有源代码 - 您可以按照自己的方式报告自己的版本。