假设int
主机内存中有一个大数组,内核的线程读取或写入该数组,并且不能保存在 GPU 全局内存中。当对阵列元素的访问被合并时,我们可以预期从主机内存/向主机内存进行突发读/写,这接近 PCI-Express 通道的理论带宽。但是当读取或写入完全是零星的(非合并)时,带宽与理论最大带宽相比会是多少?
根据下图,对于每个写入事务,都应该有一个 128 位长的数据包。但它假定 32 位寻址(考虑到 UVA 需要 64 位机器)和 4 字节作为数据大小。如果这些假设成立,则可以预期大约四分之一的最大带宽用于写入,七分之一用于读取。我对么?这些假设是真的吗?
编辑
uint
我用数组设计并执行了上述问题的测试。对于带宽约为 6.6 GB/s 的 PCI-Express 链路上的大量零星读取和大量零星写入,我获得的带宽约为 480 MB/s,显示速度降低了 13 到 14 倍。怎么解释?