【问题标题】:CUDA pinned memory and coalescingCUDA 固定内存和合并
【发布时间】:2013-10-06 17:41:53
【问题描述】:

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

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

【问题讨论】:

    标签: c++ memory cuda coalescing


    【解决方案1】:

    合并方法应该在使用零拷贝内存时应用。引用 CUDA C 最佳实践指南:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-10-16
      • 2013-01-25
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多