Infiniband addressing — имена хостов по IB-адресу без IBoIP

Я только начал знакомиться с Infiniband, и я хочу понять методы, которые вы можете использовать для обращения к узлам InfinBand.

На основе кода приведен пример из: RDMA читать и писать с глаголами IB
Я могу адресовать отдельные узлы по IP или имени хоста, используя IPoIB.

Другой способ — использовать адрес GUID порта напрямую. Но, похоже, вам придется их искать, и это больше похоже на адресацию Ethernet для Mac.

Затем то, что называется LID-адресом, 16-битным локальным адресом, назначенным диспетчером структуры. Как использовать и определить во время выполнения LID-адрес? например, я запускаю ibaddr и получаю GID fe80 :: 1a: 4bff: ff0c: 34e5 начало LID 0x6 конец 0x6

По сути, если вы не используете IPoIB, как вы конвертируете имена хостов в адреса или тому подобное? Есть ли файл hosts или какой-то эквивалент?

6

Решение

Существует основное различие между различными методами адресации, которые вы перечисляете:

  1. Обращение с чистыми глаголами IB
  2. Обращаясь с некоторым уровнем абстракции

Когда пакет «внедряется» в матрицу IB, он маршрутизируется только по LID, который является частью заголовка локальной маршрутизации пакета. LID — это локальный идентификатор, 16 бит, назначенный OpenSM (есть также случай GID и заголовок глобальной маршрутизации, но давайте оставим этот случай в стороне — это не облегчит объяснение, и вам это явно не нужно точка).

Это означает, что если вы пишете свое приложение, используя чистые глаголы IB, вам нужно будет обращаться к конечным точкам с помощью LID.
Вы можете получить LID локального порта с помощью ibv_query_port () — это часть полей атрибута порта.

Но вам не нужно делать всю грязную работу самостоятельно — вы можете использовать библиотеки абстракций, такие как librdmacm (RDMA Connection Manager), чтобы создать соединение между конечными точками (и под «конечными точками» я имею в виду RC QP), а затем использовать чистые глаголы для на самом деле отправлять / получать ваши данные.

По сути, если вы не используете IPoIB, как вы конвертируете имена хостов в
адреса или похожие? Есть ли файл hosts или какой-то эквивалент?

Вы не можете, и нет 🙁
Если вы пройдете через предыдущий пост в том блоге, на который вы ссылаетесь, вы видите, что вам нужно:

  • Определите адрес пары очереди.
  • Сообщите адрес другому узлу (через некоторый внеполосный механизм).

Ключевой пункт здесь — «вне группы».
Например, MPI обменивается всеми этими адресами по SSH (который, кстати, также может работать поверх IPoIB), и как только эта информация обменивается и все QP соединены, данные начинают передаваться через эти RC QP.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]