如果我在 CUDA C++ 上将 DMA 用于 RAM <-> GPU,我如何确定内存将从固定(锁定页面)RAM 中读取,而不是从 CPU 缓存中读取?
毕竟,使用 DMA,CPU 对有人更改内存以及需要同步 CPU(缓存<->RAM)这一事实一无所知。据我所知,来自 C++11 的 std :: memory_barier () 对 DMA 没有帮助,也不会从 RAM 中读取,而只会导致缓存 L1/L2/L3 之间的一致性。此外,一般来说,CPU上的缓存和RAM之间没有解决冲突的协议,而只是在NUMA中同步不同级别的CPU缓存L1/L2/L3和多CPU的协议:MOESI / MESIF