linux - mmap() 设备内存到用户空间

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

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

上面的说法一定是错误的...谁能告诉我错误在哪里?谢谢!

最佳答案

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

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

direction specifies locations (host or device) of src and dst Blocks CPU thread: returns after the copy is complete. Doesn't start copying until previous CUDA calls complete

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

关于linux - mmap() 设备内存到用户空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20298147/

相关文章:

c++ - 我如何获得顺序线程ID

mysql - 如何在 AWS 上使用我的数据库

Linux内核结构文件指针

linux - 为什么内核使用高逻辑地址

operating-system - 在没有 BIOS 服务 INT 13 的情况下从软盘加载操作系统镜像

linux - 如果我禁用抢占和 irq,udelay 是确定性的吗?

在外部服务器上编译代码(我没有根访问权限)

regex - 编辑 URL,保留域名部分,去除其他部分

memory-management - 烧录到闪存的​​特定扇区

c - bv_len 和 bi_size 分别如何用于 linux 内核的 struct bio?