Unified Communication X (UCX) ist ein preisgekröntes, optimiertes, produktionserprobtes Kommunikationsframework für moderne Netzwerke mit hoher Bandbreite und geringer Latenz.
UCX stellt eine Reihe abstrakter Kommunikationsprimitive bereit, die die besten verfügbaren Hardwareressourcen und Offloads nutzen. Dazu gehören RDMA (InfiniBand und RoCE), TCP, GPUs, gemeinsam genutzter Speicher und atomare Netzwerkoperationen.
Weitere Informationen finden Sie auf unserer Dokumentationsseite.
Bitte lesen Sie unsere Richtlinien zum „Membership Voluntary Consensus Standard“ und „Export Compliant Contribution Submissions“.
Das Erstellen von UCX ist normalerweise eine Kombination aus dem Ausführen von „configure“ und „make“. Wenn Sie einen Release-Tarball verwenden, führen Sie die folgenden Befehle aus, um das UCX-System aus dem Verzeichnis oben in der Baumstruktur zu installieren:
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
Wenn Sie das Git-Repository direkt klonen, verwenden Sie:
$ ./autogen.sh
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
HINWEIS: Um die Unterstützung für verschiedene Netzwerke oder andere spezifische Hardware zu kompilieren, sind beim Ausführen von configure möglicherweise zusätzliche Befehlszeilenflags erforderlich.
$ ./autogen.sh
$ ./contrib/configure-devel --prefix= $PWD /install-debug
*** HINWEIS: Entwickler-Builds von UCX beinhalten aufgrund des zusätzlichen Debugging-Codes normalerweise einen großen Leistungseinbruch zur Laufzeit.
$ contrib/buildrpm.sh -s -b
$ dpkg-buildpackage -us -uc
$ make docs
Wiki-Seite
Wiki-Seite
Server starten:
$ ./src/tools/perf/ucx_perftest -c 0
Client verbinden:
$ ./src/tools/perf/ucx_perftest < server-hostname > -t tag_lat -c 1
HINWEIS: Das Flag
-c
legt die CPU-Affinität fest. Wenn Sie beide Befehle auf demselben Host ausführen, stellen Sie sicher, dass Sie die Affinität auf verschiedene CPU-Kerne festlegen.
$ make -C test/gtest test
UCX Version 1.8.0 weist einen Fehler auf, der zu Datenbeschädigungen führen kann, wenn TCP-Transport in Verbindung mit Shared-Memory-Transport verwendet wird. Es wird empfohlen, ein Upgrade auf UCX Version 1.9.0 und höher durchzuführen. UCX-Versionen, die vor 1.8.0 veröffentlicht wurden, weisen diesen Fehler nicht auf.
UCX kann aufgrund bekannter Fehler in den pthread_rwlock-Funktionen mit den Glibc-Versionen 2.25–2.29 hängen bleiben. Wenn solche Hänge auftreten, bleibt einer der UCX-Threads in pthread_rwlock_rdlock (der von ucs_rcache_get aufgerufen wird) hängen, obwohl kein anderer Thread die Sperre hält. Ein verwandtes Problem wird im Glibc-Bug 23844 gemeldet. Wenn dieses Problem auftritt, wird empfohlen, die mit Ihrer Betriebssystemdistribution bereitgestellte Glibc-Version zu verwenden oder Glibc aus dem Quellcode mit Versionen kleiner als 2.25 oder größer als 2.29 zu erstellen.
Aufgrund eines Kompatibilitätsfehlers bei der Verwendung von UCX mit der rdma-core v22-Einstellung wird UCX_DC_MLX5_RX_INLINE=0 nicht unterstützt und macht den DC-Transport nicht verfügbar. Dieses Problem wurde in rdma-core v24 behoben und auf rdma-core-22.4-2.el7 rpm zurückportiert. Weitere Informationen finden Sie im UCX-Problem 5749.
Komponente | Rolle | Beschreibung |
---|---|---|
UCP | Protokoll | Implementiert Abstraktionen auf hoher Ebene wie Tag-Matching, Streams, Verbindungsaushandlung und -aufbau, Multi-Rail und die Handhabung verschiedener Speichertypen |
UCT | Transport | Implementiert Kommunikationsprimitive auf niedriger Ebene wie aktive Nachrichten, Remote-Speicherzugriff und atomare Operationen |
UCS | Dienstleistungen | Eine Sammlung von Datenstrukturen, Algorithmen und Systemdienstprogrammen zur allgemeinen Verwendung |
UCM | Erinnerung | Fängt Speicherzuweisungs- und -freigabeereignisse ab, die vom Speicherregistrierungscache verwendet werden |
HINWEIS: UCX >= 1.12.0 erfordert rdma-core >= 28.0 oder MLNX_OFED >= 5.0 für die Unterstützung von Infiniband- und RoCE-Transporten.
UCX ist lizenziert als:
Um einen Beitrag zu UCX zu leisten, schließen Sie sich bitte einer entsprechenden Mitwirkendenvereinbarung an.
Alle Mitwirkenden müssen die Richtlinien „Membership Voluntary Consensus Standard“ und „Export Compliant Contribution Submissions“ einhalten.
Befolgen Sie diese Anweisungen, wenn Sie Beiträge und Änderungen einreichen.
Um in einer Veröffentlichung auf UCX zu verweisen, verwenden Sie bitte den folgenden Eintrag:
@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 }
}
So verweisen Sie auf die UCX-Website:
@misc { openucx-website ,
title = { {The Unified Communication X Library} } ,
key = { {{The Unified Communication X Library}},
howpublished = {{url{http://www.openucx.org}}}
}