CUDA 固定内存并合并

CUDA pinned memory and coalescing

本文关键字:合并 内存 CUDA      更新时间:2023-10-16

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

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

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

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

引用S.库克的"CUDA编程"一书

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