mmap()设备内存进入用户空间

时间:2013-11-30 08:23:29

标签: linux linux-kernel linux-device-driver mmap

如果我们进行mmap()系统调用并将一些PCIE设备内存(如GPU)映射到用户空间,那么应用程序可以访问设备中的那些内存区域而无需任何操作系统开销。数据可以从文件系统缓冲区直接复制到设备内存而无需任何其他副本。

以上陈述一定是错的......谁能告诉我这个缺陷在哪里?谢谢!

1 个答案:

答案 0 :(得分:0)

对于普通设备,您所说的是正确的。如果GPU内存的读/写行为不同,他们可能会这样做。我们应该查看cudaMemcpy()的一些文档。

来自Nvidia's basics of CUDA第22页,

  

指示指定 src dst 的位置(主机或设备)   阻止CPU线程:复制完成后返回。   在之前的CUDA调用完成之前不会开始复制

很明显,cudaMemcpy()与之前的GPU寄存器写入同步,这可能导致mmap()内存更新。由于GPU管道是管道,因此从CPU发出cudaMemcpy()时,可能无法完成先前的命令问题。