1

我正在尝试探索跨设备(GPU、NIC、存储等)实现全局 IO 空间的可能性。这可能归结为这个线程中提出的问题——两个 PCI 设备之间的直接通信

我一直在阅读 Nvidia GPUDirect,其中内存区域被固定,物理地址是在 nvidia_p2p_* 调用的帮助下获得的。我无法完全理解如何使用 GPU 的物理地址来对 3rd 方设备的 DMA 控制器进行编程以进行数据传输。我对 GPU 内存不可见这一事实感到困惑,这与 cpu 内存空间不同(这可能是由于我对 dma 控制器编程知识贫乏)。对此的任何指示都会非常有帮助。

此外,许多 PCI 设备根据 PCI BAR 公开内存区域(例如,GPU 公开 256M 的内存区域)。有没有办法知道这个 BAR 内存区域映射到的设备物理地址?BAR 内存区域和通过 nvidia 驱动程序分配给 CUDA 运行时的内存之间是否有任何重叠?

提前致谢。

4

0 回答 0