如果我们执行mmap()系统调用并将一些PCIE设备内存(如GPU)映射到用户空间,则应用程序可以访问设备中的这些内存区域,而无需任何操作系统开销。 数据可以通过从文件系统缓冲区直接复制到设备存储器而无需任何其他副本。
以上声明一定是错的…谁能告诉我这个漏洞在哪里? 谢谢!
对于一个正常的设备,你所说的是正确的。 如果GPU内存的读/写行为不同,他们可能会这样做。 我们应该看一下cudaMemcpy()
一些文档。
从Nvidia的CUDA第22页的基础知识 ,
方向指定src和dst的位置(主机或设备)块CPU线程:复制完成后返回。 直到以前的CUDA调用完成才开始复制
看起来很清楚, cudaMemcpy()
是同步到以前的GPU寄存器写入,这可能导致mmap()
内存被更新。 由于GPU管道是一个管道,因此当从CPU发出cudaMemcpy()
时,先前的命令问题可能尚未完成。