CUDA固定内存和合并

时间:2013-09-30 18:37:07

标签: c++ memory cuda coalescing

在计算能力2.x设备上,我如何确保gpu在使用映射固定内存时使用合并内存访问,并假设通常在使用全局内存时,2D数据需要填充?

我似乎无法在任何地方找到关于此的信息,也许我应该看起来更好,或者我错过了一些东西。我们欢迎任何正确方向的指示......

1 个答案:

答案 0 :(得分:2)

使用零复制内存时,应该应用合并方法。引用CUDA C最佳实践指南:

  

因为数据没有缓存在GPU上,所以映射了   固定内存应该只读取或写入一次,以及全局加载和存储   读取和写入内存应该合并。

引用S.Cook撰写的“CUDA编程”一书

  

如果您考虑访问全局内存会发生什么,整个缓存行将从计算2.x硬件的内存中引入。即使在计算1.x硬件上,也可以从全局存储器中获取相同的128字节,可能减少到64或32。   NVIDIA不会公布其使用的PCI-E传输的大小,也不会公布实际实现零拷贝的详细信息。但是,用于全局存储器的合并方法可以与PCI-E传输一起使用。经编内存延迟隐藏模型同样可以应用于PCI-E传输,只要有足够的算术密度来隐藏PCI-E传输的延迟。