Unified Communication X (UCX) — это отмеченная наградами, оптимизированная и проверенная коммуникационная платформа для современных сетей с высокой пропускной способностью и низкой задержкой.
UCX предоставляет набор абстрактных коммуникационных примитивов, которые используют лучшие из доступных аппаратных ресурсов и разгружают их. К ним относятся RDMA (InfiniBand и RoCE), TCP, графические процессоры, общая память и атомарные сетевые операции.
Пожалуйста, посетите наш сайт документации для получения более подробной информации.
Пожалуйста, ознакомьтесь с нашими политиками «Стандарт добровольного согласия членов» и «Представление материалов, соответствующих требованиям экспорта».
Сборка UCX обычно представляет собой комбинацию операций «configure» и «make». При использовании архива выпуска выполните следующие команды для установки системы UCX из каталога в верхней части дерева:
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
При прямом клонировании репозитория git используйте:
$ ./autogen.sh
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
ПРИМЕЧАНИЕ. Для компиляции поддержки различных сетей или другого конкретного оборудования могут потребоваться дополнительные флаги командной строки при запуске configure.
$ ./autogen.sh
$ ./contrib/configure-devel --prefix= $PWD /install-debug
*** ПРИМЕЧАНИЕ. Сборки UCX для разработчиков обычно приводят к значительному снижению производительности во время выполнения из-за дополнительного кода отладки.
$ contrib/buildrpm.sh -s -b
$ dpkg-buildpackage -us -uc
$ make docs
Вики-страница
Вики-страница
Запустить сервер:
$ ./src/tools/perf/ucx_perftest -c 0
Подключить клиента:
$ ./src/tools/perf/ucx_perftest < server-hostname > -t tag_lat -c 1
ПРИМЕЧАНИЕ. Флаг
-c
устанавливает соответствие ЦП. При выполнении обеих команд > на одном хосте убедитесь, что вы установили привязку к разным ядрам ЦП.
$ make -C test/gtest test
В UCX версии 1.8.0 есть ошибка, которая может привести к повреждению данных, когда транспорт TCP используется вместе с транспортом общей памяти. Рекомендуется обновить UCX до версии 1.9.0 и выше. Версии UCX, выпущенные до 1.8.0, не имеют этой ошибки.
UCX может зависать с glibc версий 2.25-2.29 из-за известных ошибок в функциях pthread_rwlock. Когда происходят такие зависания, один из потоков UCX застревает в pthread_rwlock_rdlock (который вызывается ucs_rcache_get), хотя никакой другой поток не удерживает блокировку. Соответствующая проблема описана в glibc Bug 23844. Если эта проблема возникает, рекомендуется использовать версию glibc, поставляемую с дистрибутивом вашей ОС, или собрать glibc из исходного кода, используя версии ниже 2.25 или выше 2.29.
Из-за недостатка совместимости при использовании UCX с rdma-core v22 настройка UCX_DC_MLX5_RX_INLINE=0 не поддерживается и сделает транспортировку постоянного тока недоступной. Эта проблема исправлена в rdma-core v24 и перенесена в rdma-core-22.4-2.el7 rpm. Дополнительную информацию см. в выпуске ucx 5749.
Компонент | Роль | Описание |
---|---|---|
ОГП | Протокол | Реализует абстракции высокого уровня, такие как сопоставление тегов, потоки, согласование и установление соединения, multi-rail и обработка различных типов памяти. |
УКТ | Транспорт | Реализует примитивы связи низкого уровня, такие как активные сообщения, удаленный доступ к памяти и атомарные операции. |
ПСК | Услуги | Коллекция структур данных, алгоритмов и системных утилит для общего использования. |
УЦМ | Память | Перехватывает события выделения и освобождения памяти, используемые кэшем регистрации памяти. |
ПРИМЕЧАНИЕ. Для UCX >= 1.12.0 требуется rdma-core >= 28.0 или MLNX_OFED >= 5.0 для поддержки транспорта Infiniband и RoCE.
UCX имеет лицензию:
Чтобы внести свой вклад в UCX, зарегистрируйтесь, подписав соответствующее Соглашение участника.
Все участники должны соблюдать правила «Стандарта добровольного согласия членов» и «Представление материалов, соответствующих требованиям экспорта».
Следуйте этим инструкциям при отправке вкладов и изменений.
Для ссылки на UCX в публикации используйте следующую запись:
@inproceedings { shamis2015ucx ,
title = { UCX: an open source framework for HPC network APIs and beyond } ,
author = { Shamis, Pavel and Venkata, Manjunath Gorentla and Lopez, M Graham and Baker, Matthew B and Hernandez, Oscar and Itigin, Yossi and Dubman, Mike and Shainer, Gilad and Graham, Richard L and Liss, Liran and others } ,
booktitle = { 2015 IEEE 23rd Annual Symposium on High-Performance Interconnects } ,
pages = { 40--43 } ,
year = { 2015 } ,
organization = { IEEE }
}
Для ссылки на веб-сайт UCX:
@misc { openucx-website ,
title = { {The Unified Communication X Library} } ,
key = { {{The Unified Communication X Library}},
howpublished = {{url{http://www.openucx.org}}}
}