我怎样才能从锁定的(锁定页)RAM读取,而不是从CPU高速缓存(使用DMA零拷贝与GPU)?(How

2019-09-21 08:42发布

如果我使用的DMA RAM < - > GPU上的CUDA C ++,我怎么能肯定的是,将内存从锁定的(锁定页)RAM,从CPU缓存中读取,而不是?

毕竟,DMA,CPU不知道的事实任何人更改了内存和大约需要CPU的同步(缓存< - > RAM)。 而据我所知,性病:: memory_barier()从C + +11不与DMA帮助,而且不会从RAM中读取,但只有将导致缓存L1 / L2 / L3之间的合规性。 此外,在一般情况下,那么就没有协议缓存和CPU上RAM之间解决冲突,但仅同步协议,在NUMA不同水平的CPU高速缓冲存储器L1 / L2 / L3和多CPU的:MOESI / MESIF

Answer 1:

在x86上,CPU就探测总线流量,所以这不是一个问题。 在Sandy Bridge的级的CPU,PCI Express总线控制器集成到CPU中,所以CPU其实可以基于GPU写入服务GPU从三级缓存读取,或更新其缓存。



文章来源: How can I read from the pinned (lock-page) RAM, and not from the CPU cache (use DMA zero-copy with GPU)?