线程/进程将在传递给 post_send() 的数据中包含 MR rkey,并使用 MR lkey 配置 sge 列表以从中传输。
我正在玩 infiniband HW,并想通过同一线程在本地发送和接收 RDMA 来检查使用 lkey 和 rkey 的 MR 是否合法。
线程/进程将在传递给 post_send() 的数据中包含 MR rkey,并使用 MR lkey 配置 sge 列表以从中传输。
我正在玩 infiniband HW,并想通过同一线程在本地发送和接收 RDMA 来检查使用 lkey 和 rkey 的 MR 是否合法。
我不确定我是否理解这个问题,但是是的,将同一 MR 的 L_Key 和 R_Key 同时用于本地请求是完全可以的。如果您使用重叠内存来发送和接收工作请求,您可能会得到奇怪的结果——例如,从地址 X 到地址 X + 50 的 100 个字节的 RDMA WRITE。类似地,有多个工作请求正在运行,其中一个正在覆盖另一个人使用相同的内存会导致混乱的结果。
但是,例如,从本地地址 X 到本地地址 X + 200(这些地址位于同一内存区域中)的 100 个字节的 RDMA WRITE 非常好——您只是将 RDMA 适配器用作精美的本地 DMA 引擎。