47
社区成员
发帖
与我相关
我的任务
分享您好,请教个HMM的问题哈,1. 在test_hmm中,read/write模拟设备读/写用户地址的数据,实际中这两个行为是发生在设备侧,例如GPU上的吗?2.在实际使用中,系统页迁移到设备页,这个触发的条件是什么呢,例如我在host上malloc一段内存,填充数据后,提交给GPU用,那这个迁移是靠什么来触发呢,不胜感激
问题1:是的,在真实系统里,这两个动作(对用户地址数据的实际读写)发生在设备侧(GPU 的计算单元/DMA 引擎),设备通过自己的 MMU/IOMMU 用 hmm_range_fault 建立好的映射去访问物理页。test_hmm 把"设备访问"这一步替换成了 CPU memcpy,模拟的就是设备对数据的访问。
问题2:malloc的内存填充数据后,当前的数据在SRAM里。这时通常需要调用cuda或rocm提供的函数让这段VA被GPU看到。然后GPU访问这段VA时会触发GPU的page fault,也就是GPU发送确页中断。然后GPU驱动就去处理这个page fault,在这个处理中进行SRAM->VRAM的数据迁移。然后,CPU再去访问这段VA时,发现数据在VRAM里,就会进行VRAM->SRAM的迁移。