Unified Communication X (UCX) est un cadre de communication optimisé et primé pour les réseaux modernes à large bande passante et à faible latence.
UCX expose un ensemble de primitives de communication abstraites qui utilisent le meilleur des ressources matérielles et des déchargements disponibles. Ceux-ci incluent RDMA (InfiniBand et RoCE), TCP, GPU, mémoire partagée et opérations atomiques de réseau.
Veuillez visiter notre site de documentation pour plus de détails.
Veuillez consulter nos politiques « Norme de consensus volontaire des membres » et « Soumissions de contributions conformes à l'exportation ».
La création d'UCX est généralement une combinaison d'exécution de « configure » et de « make ». Si vous utilisez une archive tar de version, exécutez les commandes suivantes pour installer le système UCX à partir du répertoire en haut de l'arborescence :
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
Si vous clonez directement le référentiel git, utilisez :
$ ./autogen.sh
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
REMARQUE : La compilation de la prise en charge de divers réseaux ou d'autres matériels spécifiques peut nécessiter des indicateurs de ligne de commande supplémentaires lors de l'exécution de configure.
$ ./autogen.sh
$ ./contrib/configure-devel --prefix= $PWD /install-debug
*** REMARQUE : Les versions de développeur d'UCX incluent généralement une pénalité de performances importante au moment de l'exécution en raison du code de débogage supplémentaire.
$ contrib/buildrpm.sh -s -b
$ dpkg-buildpackage -us -uc
$ make docs
Page wiki
Page wiki
Démarrer le serveur :
$ ./src/tools/perf/ucx_perftest -c 0
Connecter le client :
$ ./src/tools/perf/ucx_perftest < server-hostname > -t tag_lat -c 1
REMARQUE l'indicateur
-c
définit l'affinité du processeur. Si vous exécutez les deux commandes > sur le même hôte, assurez-vous de définir l'affinité avec différents cœurs de processeur.
$ make -C test/gtest test
La version UCX 1.8.0 présente un bogue susceptible de provoquer une corruption des données lorsque le transport TCP est utilisé conjointement avec le transport de mémoire partagée. Il est conseillé de mettre à niveau vers la version UCX 1.9.0 et supérieure. Les versions UCX publiées avant 1.8.0 n'ont pas ce bug.
UCX peut se bloquer avec les versions 2.25-2.29 de la glibc en raison de bogues connus dans les fonctions pthread_rwlock. Lorsque de tels blocages se produisent, l'un des threads UCX reste bloqué dans pthread_rwlock_rdlock (qui est appelé par ucs_rcache_get), même si aucun autre thread ne détient le verrou. Un problème connexe est signalé dans le bug 23844 de la glibc. Si ce problème se produit, il est conseillé d'utiliser la version de la glibc fournie avec la distribution de votre système d'exploitation ou de construire la glibc à partir des sources en utilisant des versions inférieures à 2.25 ou supérieures à 2.29.
En raison d'un défaut de compatibilité lors de l'utilisation d'UCX avec le paramètre rdma-core v22, UCX_DC_MLX5_RX_INLINE=0 n'est pas pris en charge et rendra le transport DC indisponible. Ce problème est résolu dans rdma-core v24 et rétroporté vers rdma-core-22.4-2.el7 rpm. Voir le numéro ucx 5749 pour plus de détails.
Composant | Rôle | Description |
---|---|---|
UCP | Protocole | Implémente des abstractions de haut niveau telles que la correspondance de balises, les flux, la négociation et l'établissement de connexions, le multi-rail et la gestion de différents types de mémoire |
UCT | Transport | Implémente des primitives de communication de bas niveau telles que les messages actifs, l'accès à la mémoire à distance et les opérations atomiques |
SCU | Services | Une collection de structures de données, d'algorithmes et d'utilitaires système pour un usage courant |
UCM | Mémoire | Intercepte les événements d'allocation de mémoire et de libération, utilisés par le cache d'enregistrement de mémoire |
REMARQUE : UCX >= 1.12.0 nécessite rdma-core >= 28.0 ou MLNX_OFED >= 5.0 pour la prise en charge des transports Infiniband et RoCE.
UCX est sous licence comme :
Afin de contribuer à UCX, veuillez vous inscrire avec un accord de contribution approprié.
Tous les contributeurs doivent se conformer aux politiques « Norme de consensus volontaire des membres » et « Soumissions de contributions conformes à l'exportation ».
Suivez ces instructions lorsque vous soumettez des contributions et des modifications.
Pour référencer UCX dans une publication, veuillez utiliser l'entrée suivante :
@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 }
}
Pour référencer le site Web UCX :
@misc { openucx-website ,
title = { {The Unified Communication X Library} } ,
key = { {{The Unified Communication X Library}},
howpublished = {{url{http://www.openucx.org}}}
}