0

我正在尝试获取有关 RDMA 读写语义(尤其是数据放置语义)的更多详细信息,并且我想在这里与专家确认我的理解。

  1. RDMA 读取:

一旦在完成队列中看到 RDMA 读取完成,数据是否在本地缓冲区中可用/可见。如果我使用 GPU Direct DMA 并且本地地址映射到 GPU 内存,行为是否相同。一旦在完成队列中看到 RDMA READ 完成,数据是否会立即在 GPU 中可用。如果它不是立即可用的,什么操作将确保它。

  1. 使用立即(或)RDMA 写入 + 发送的 RDMA 写入:

远程主机在看到接收队列中的即时数据后,是否可以检查其内存中是否存在数据。如果写入到 GPU 内存(使用 GDR),期望/行为是否会改变。

4

1 回答 1

0

RDMA 读取。一旦在完成队列中看到 RDMA 读取完成,数据是否会在本地缓冲区中可用/看到?

是的

如果我使用 GPU Direct DMA 并且本地地址映射到 GPU 内存,行为是否相同?

不必要。有可能网卡已经向 GPU 发送了数据,但 GPU 还没有收到。同时 RDMA 读取完成已经到达 CPU。其根本原因是 PCIe 语义,它允许对不同目的地(CPU/GPU 内存)的写入重新排序。

如果它不能立即可用,什么操作将确保它?

为确保数据已到达 GPU,可以在 RDMA 完成后在 CPU 上设置一个标志,并从 GPU 代码轮询该标志。这是因为 GPU 发出的 PCIe 读取将“推送”NIC 的 DMA 写入(根据 PCIe 排序语义)。

RDMA Write with Immediate(或)RDMA Write + Send:远程主机在看到接收队列中的即时数据后,是否可以检查其内存中是否存在数据。如果写入到 GPU 内存(使用 GDR),期望/行为是否会改变。

是的,这可行,但 GDR 遇到与上述相同的问题,与 CPU 内存相比,GPU 内存的写入乱序,这也是由于 PCIe 排序语义。RNIC 无法控制 PCIe,因此在任何一种情况下它都无法强制执行“所需”语义。

于 2021-10-30T11:30:02.640 回答