A Comunicação Unificada X (UCX) é uma estrutura de comunicação comprovada de produção otimizada e premiada para redes modernas de alta largura de banda e baixa latência.
O UCX expõe um conjunto de primitivas de comunicação abstratas que utilizam o melhor dos recursos de hardware e descarregamentos disponíveis. Isso inclui RDMA (InfiniBand e RoCE), TCP, GPUs, memória compartilhada e operações atômicas de rede.
Visite nosso site de documentação para obter mais detalhes.
Revise nossas políticas "Padrão de consenso voluntário para associados" e "Envios de contribuições em conformidade com exportação".
Construir UCX normalmente é uma combinação de execução de “configure” e “make”. Se estiver usando um tarball de lançamento, execute os seguintes comandos para instalar o sistema UCX a partir do diretório no topo da árvore:
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
Se estiver clonando diretamente o repositório git, use:
$ ./autogen.sh
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
NOTA: A compilação do suporte para várias redes ou outro hardware específico pode exigir sinalizadores de linha de comando adicionais ao executar o configure.
$ ./autogen.sh
$ ./contrib/configure-devel --prefix= $PWD /install-debug
*** NOTA: As compilações de desenvolvedor do UCX normalmente incluem uma grande penalidade de desempenho em tempo de execução devido ao código de depuração extra.
$ 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: o sinalizador
-c
define a afinidade da CPU. Se estiver executando ambos os comandos no mesmo host, certifique-se de definir a afinidade para diferentes núcleos de CPU.
$ make -C test/gtest test
A versão 1.8.0 do UCX possui um bug que pode causar corrupção de dados quando o transporte TCP é usado em conjunto com o transporte de memória compartilhada. É aconselhável atualizar para o UCX versão 1.9.0 e superior. Versões UCX lançadas antes de 1.8.0 não possuem esse bug.
O UCX pode travar com as versões 2.25-2.29 da glibc devido a bugs conhecidos nas funções pthread_rwlock. Quando tais travamentos ocorrem, um dos threads UCX fica preso em pthread_rwlock_rdlock (que é chamado por ucs_rcache_get), mesmo que nenhum outro thread mantenha o bloqueio. Um problema relacionado é relatado no glibc Bug 23844. Se esse problema ocorrer, é aconselhável usar a versão glibc fornecida com a distribuição do seu sistema operacional ou construir o glibc a partir do código-fonte usando versões inferiores a 2.25 ou superiores a 2.29.
Devido à falha de compatibilidade ao usar UCX com rdma-core v22, a configuração UCX_DC_MLX5_RX_INLINE=0 não é suportada e tornará o transporte DC indisponível. Esse problema foi corrigido no rdma-core v24 e portado para rdma-core-22.4-2.el7 rpm. Consulte a edição ucx 5749 para obter mais detalhes.
Componente | Papel | Descrição |
---|---|---|
PCU | Protocolo | Implementa abstrações de alto nível, como correspondência de tags, fluxos, negociação e estabelecimento de conexões, multi-rail e manipulação de diferentes tipos de memória |
UCT | Transporte | Implementa primitivas de comunicação de baixo nível, como mensagens ativas, acesso remoto à memória e operações atômicas |
UCS | Serviços | Uma coleção de estruturas de dados, algoritmos e utilitários de sistema para uso comum |
UCM | Memória | Intercepta eventos de alocação e liberação de memória, usados pelo cache de registro de memória |
NOTA: UCX >= 1.12.0 requer rdma-core >= 28.0 ou MLNX_OFED >= 5.0 para suporte a transportes Infiniband e RoCE.
UCX é licenciado como:
Para contribuir com o UCX, assine um Contrato de Colaborador apropriado.
Todos os contribuidores devem cumprir as políticas "Padrão de consenso voluntário de membros" e "Envios de contribuições compatíveis com exportação".
Siga estas instruções ao enviar contribuições e alterações.
Para fazer referência ao UCX em uma publicação, use a seguinte 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 consultar o site da UCX:
@misc { openucx-website ,
title = { {The Unified Communication X Library} } ,
key = { {{The Unified Communication X Library}},
howpublished = {{url{http://www.openucx.org}}}
}