Unified Communication X (UCX) es un marco de comunicación probado, de producción optimizada y galardonado para redes modernas, de alto ancho de banda y baja latencia.
UCX expone un conjunto de primitivas de comunicación abstractas que utilizan los mejores recursos y descargas de hardware disponibles. Estos incluyen RDMA (InfiniBand y RoCE), TCP, GPU, memoria compartida y operaciones atómicas de red.
Visite nuestro sitio de documentación para obtener más detalles.
Revise nuestras políticas de "Estándar de consenso voluntario de membresía" y "Presentación de contribuciones que cumplen con las normas de exportación".
La creación de UCX suele ser una combinación de ejecutar "configure" y "make". Si utiliza un tarball de lanzamiento, ejecute los siguientes comandos para instalar el sistema UCX desde el directorio en la parte superior del árbol:
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
Si clonas directamente el repositorio git, usa:
$ ./autogen.sh
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
NOTA: La compilación del soporte para varias redes u otro hardware específico puede requerir indicadores de línea de comando adicionales al ejecutar configure.
$ ./autogen.sh
$ ./contrib/configure-devel --prefix= $PWD /install-debug
*** NOTA: Las compilaciones de UCX para desarrolladores generalmente incluyen una gran penalización de rendimiento en tiempo de ejecución debido al código de depuración adicional.
$ contrib/buildrpm.sh -s -b
$ dpkg-buildpackage -us -uc
$ make docs
página wiki
página wiki
Iniciar servidor:
$ ./src/tools/perf/ucx_perftest -c 0
Conectar cliente:
$ ./src/tools/perf/ucx_perftest < server-hostname > -t tag_lat -c 1
NOTA: el indicador
-c
establece la afinidad de la CPU. Si ejecuta ambos comandos > en el mismo host, asegúrese de configurar la afinidad con diferentes núcleos de CPU.
$ make -C test/gtest test
La versión 1.8.0 de UCX tiene un error que puede causar daños en los datos cuando se utiliza el transporte TCP junto con el transporte de memoria compartida. Se recomienda actualizar a la versión UCX 1.9.0 y superior. Las versiones de UCX lanzadas antes de la 1.8.0 no tienen este error.
UCX puede bloquearse con las versiones glibc 2.25-2.29 debido a errores conocidos en las funciones pthread_rwlock. Cuando ocurren tales bloqueos, uno de los subprocesos UCX se atasca en pthread_rwlock_rdlock (que es llamado por ucs_rcache_get), aunque ningún otro subproceso mantiene el bloqueo. Se informa un problema relacionado en el error 23844 de glibc. Si ocurre este problema, se recomienda utilizar la versión de glibc proporcionada con la distribución de su sistema operativo o compilar glibc desde el código fuente utilizando versiones inferiores a 2.25 o superiores a 2.29.
Debido a una falla de compatibilidad al usar UCX con rdma-core v22, la configuración UCX_DC_MLX5_RX_INLINE=0 no es compatible y hará que el transporte de CC no esté disponible. Este problema se solucionó en rdma-core v24 y se respaldó a rdma-core-22.4-2.el7 rpm. Consulte el número 5749 de ucx para obtener más detalles.
Componente | Role | Descripción |
---|---|---|
UCP | Protocolo | Implementa abstracciones de alto nivel como coincidencia de etiquetas, transmisiones, negociación y establecimiento de conexiones, multirraíl y manejo de diferentes tipos de memoria. |
UCT | Transporte | Implementa primitivas de comunicación de bajo nivel, como mensajes activos, acceso a memoria remota y operaciones atómicas. |
UCS | Servicios | Una colección de estructuras de datos, algoritmos y utilidades del sistema para uso común. |
UCM | Memoria | Intercepta eventos de liberación y asignación de memoria, utilizados por el caché de registro de memoria |
NOTA: UCX >= 1.12.0 requiere rdma-core >= 28.0 o MLNX_OFED >= 5.0 para compatibilidad con transportes Infiniband y RoCE.
UCX tiene licencia como:
Para contribuir a UCX, regístrese con un Acuerdo de colaborador apropiado.
Todos los contribuyentes deben cumplir con las políticas de "Estándar de consenso voluntario de membresía" y "Presentación de contribuciones que cumplen con las normas de exportación".
Siga estas instrucciones al enviar contribuciones y cambios.
Para hacer referencia a UCX en una publicación, utilice la siguiente entrada:
@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 }
}
Para hacer referencia al sitio web de UCX:
@misc { openucx-website ,
title = { {The Unified Communication X Library} } ,
key = { {{The Unified Communication X Library}},
howpublished = {{url{http://www.openucx.org}}}
}