我正在尝试探索跨设备(GPU,NIC,存储等)实现全局IO空间的可能性。这可能归结为此主题中提出的问题 - Direct communication between two PCI devices。
我一直在阅读Nvidia GPUDirect,其中内存区域固定,物理地址是在nvidia_p2p_ *调用的帮助下获得的。我无法完全理解GPU的物理地址如何用于编程第三方设备的DMA控制器以进行数据传输。令我感到困惑的是,与cpu内存空间不同,GPU内存不可见(这可能是由于我对编程dma控制器的了解不足)。关于此的任何指示都会非常有用。
此外,许多PCI设备在PCI BAR方面暴露存储器区域(例如,GPU暴露256M的存储器区域)。有没有办法知道这个BAR内存区域映射到的设备物理地址? BAR内存区域和通过nvidia驱动程序分配给CUDA运行时的内存之间是否有任何重叠?
提前致谢。