通信统一协议 X
通信统一协议 X(UCX)是一个 屡获殊荣、 优化的已验证生产通信框架,适用于现代的高带宽和低延迟网络。
UCX 提供一套抽象的通信原语,利用了现有硬件资源和卸载的最佳功能。这些包括 RDMA(InfiniBand 和 RoCE)、TCP、GPU、共享内存和网络原子操作。
请访问我们的 文档网站 了解更多详情。
请查阅我们的 "成员自愿协商标准" 以及 "出口合规贡献提交" 政策。
使用 UCX
发布版本
构建 UCX 通常包括运行 "configure" 和 "make"。 如果使用发布的 tarball,请执行以下命令在根目录中安装 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 的开发者版本在运行时通常会包含额外的调试代码,导致较大的性能损失。
构建 RPM 包
$ contrib/buildrpm.sh -s -b
构建 DEB 包
$ dpkg-buildpackage -us -uc
构建 Doxygen 文档
$ make docs
使用 UCX 安装 OpenMPI 和 OpenSHMEM
使用 UCX 安装 MPICH
UCX 性能测试
启动服务器:
$ ./src/tools/perf/ucx_perftest -c 0
连接客户端:
$ ./src/tools/perf/ucx_perftest <server-hostname> -t tag_lat -c 1
注意:
-c
标志设置 CPU 亲和性。如果在同一主机上运行两个命令,请确保将亲和性设置为不同的 CPU 核心。
运行内部单元测试
$ make -C test/gtest test
已知问题
-
UCX 版本 1.8.0 存在一个错误,当 TCP 传输与共享内存传输一起使用时,可能会导致数据损坏。建议升级到 UCX 版本 1.9.0 及以上。UCX 在 1.8.0 之前发布的版本没有这个错误。
-
由于 pthread_rwlock 函数中的已知错误,UCX 可能会在 glibc 版本 2.25-2.29 上挂起。当发生这种挂起时,其中一个 UCX 线程会卡在 pthread_rwlock_rdlock 中(由 ucs_rcache_get 调用),即使没有其他线程持有锁。相关问题在 glibc Bug 23844 中报告。如果发生此问题,建议使用操作系统发行版提供的 glibc 版本或使用小于 2.25 或大于 2.29 的版本从源代码构建 glibc。
-
在与 rdma-core v22 一起使用 UCX 时,由于兼容性缺陷,设置 UCX_DC_MLX5_RX_INLINE=0 是不支持的,这将使 DC 传输不可用。此问题已在 rdma-core v24 中修复,并回溯到 rdma-core-22.4-2.el7 rpm。详情请参见 ucx issue 5749。
架构
组件 | 角色 | 描述 |
---|---|---|
UCP | 协议 | 实现高级抽象,例如标签匹配、流、连接协商和建立、多轨,并处理不同的内存类型 |
UCT | 传输 | 实现低级通信原语,例如主动消息、远程内存访问和原子操作 |
UCS | 服务 | 包含数据结构、算法和常用系统实用工具的集合 |
UCM | 内存 | 拦截内存分配和释放事件,被内存注册缓存使用 |
支持的传输方式
- Infiniband
- Omni-Path
- RoCE
- Cray Gemini and Aries
- CUDA
- ROCm
- 共享内存
- TCP/IP
注意: UCX >= 1.12.0 版本需要 rdma-core >= 28.0 或 MLNX_OFED >= 5.0 以支持 Infiniband 和 RoCE 传输。
支持的 CPU 架构
许可证
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}}}
}