RDMA чтение и запись семантики размещения / видимости данных

Я пытаюсь получить более подробную информацию о семантике чтения и записи RDMA (особенно семантике размещения данных), и я хотел бы подтвердить свое понимание здесь экспертами.

  1. RDMA прочитал:

Будут ли данные доступны / видны в локальном буфере после того, как завершение чтения RDMA будет видно в очереди завершения. Такое же поведение, если я использую GPU Direct DMA, и локальный адрес отображается в память GPU. Будут ли данные доступны в GPU сразу после того, как завершение RDMA READ появится в очереди завершения. Если он не доступен сразу, какая операция обеспечит его.

  1. Запись RDMA с немедленной (или) записью + отправкой RDMA:

Может ли удаленный хост проверить наличие данных в своей памяти после того, как он увидел немедленные данные в очереди приема. И изменится ли ожидание / поведение, если запись выполняется в память графического процессора (с использованием GDR).

1 ответ

РДМА читал. Будут ли данные доступны/видны в локальном буфере после того, как завершение чтения RDMA будет замечено в очереди завершения?

Да

Будет ли такое же поведение, если я использую GPU Direct DMA и локальный адрес сопоставляется с памятью GPU?

Не обязательно. Возможно, сетевая карта отправила данные графическому процессору, но тот еще не получил их. Между тем завершение чтения RDMA уже поступило в ЦП. Основной причиной этого является семантика PCIe, которая позволяет переупорядочивать записи в другое место назначения (память CPU/GPU).

Если он не доступен сразу, какая операция его обеспечит?

Чтобы убедиться, что данные поступили в GPU, можно установить флаг на CPU после завершения RDMA и опросить этот флаг из кода GPU. Это работает, потому что чтение PCIe, выдаваемое графическим процессором, будет «подталкивать» записи DMA сетевой карты (согласно семантике упорядочения PCIe).

Запись RDMA с немедленной (или) записью и отправкой RDMA: может ли удаленный хост проверить наличие данных в своей памяти после того, как он увидел немедленные данные в очереди приема. И изменится ли ожидание/поведение, если запись будет осуществляться в память графического процессора (с использованием GDR).

Да, это работает, но GDR страдает от той же проблемы, что и выше, когда записи в память графического процессора поступают не по порядку по сравнению с памятью процессора, опять же из-за семантики упорядочения PCIe. RNIC не может управлять PCIe и, следовательно, не может навязывать «желаемую» семантику в любом случае.

Другие вопросы по тегам