CUDA 固定内存并合并
CUDA pinned memory and coalescing
在计算能力 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 传输的延迟。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 如何在 c++ 中的析构函数中正确释放合并 LL 的内存?
- C++合并两个内存块?
- C++合并排序内存问题
- 我想在C++编写合并排序,但内存出现一些错误,无法解决
- 分析我的CUDA内核的内存访问合并
- 合并排序逻辑分配内存失败
- 合并排序中的动态内存分配
- 在没有额外内存的情况下合并矢量
- CUDA - 了解线程的并行执行(扭曲)和合并的内存访问
- 在C++中合并基本内存地址
- CUDA 固定内存并合并
- 快速排序和合并排序坏内存分配(不对 32k 元素进行排序)
- 将较小的数据块合并到一个较大的内存区中
- 原子负载是否可以合并到C++内存模型中
- 从非合并访问到合并内存访问CUDA
- 仔细检查对CUDA中内存合并的理解