关于UCX项目
简介
Unified Communication X(UCX)是一个被多次获奖的通信框架,专为现代高带宽、低延迟网络而优化。它通过一组抽象的通信原语最大化利用现有的硬件资源和卸载技术。这些技术包括RDMA(如InfiniBand和RoCE)、TCP、GPU、共享内存以及网络原子操作。
使用UCX
UCX的构建过程通常包括运行“configure”和“make”命令。如果使用发布的源码包,可以执行以下命令在项目的顶层目录中进行安装:
$ ./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
在进行开发者构建时,需要注意运行时可能会有性能损失,因为包含了额外的调试代码。
已知问题
UCX项目中有一些已知问题需要注意。例如,UCX 1.8.0版本在使用TCP和共享内存传输时可能导致数据损坏。建议升级到1.9.0及以上版本。此外,某些glibc版本在使用UCX时可能导致挂起现象,建议使用低于2.25或高于2.29版本的glibc。
架构
UCX框架由多个组件构成,每个组件负责特定的功能:
- UCP(协议层):实现高层抽象,如标签匹配、流、连接协商、不同内存类型的处理等。
- UCT(传输层):提供低层通信原语,如主动消息、远程内存访问、原子操作等。
- UCS(服务层):提供通用的数据结构、算法和系统工具。
- UCM(内存层):拦截内存分配和释放事件,用于内存注册缓存。
支持的传输协议
UCX支持多种传输协议,例如Infiniband、Omni-Path、RoCE、Cray的Gemini和Aries、CUDA、ROCm以及共享内存和TCP/IP等。
支持的CPU架构
UCX支持以下CPU架构:
- x86_64
- Power8/9
- Arm v8
许可证
UCX采用BSD3许可证发布,这是一种较为宽松的开源许可证。
社区
UCX项目的社区活动包括维护官网、文档、代码仓库以及发布版本。项目也活跃于Twitter等社交平台。
贡献者协议和指南
为了能够为UCX作出贡献,参与者需签署适当的贡献者协议,并遵循相关的政策和指南。
发表文献
如果要在学术文献中引用UCX,可以使用提供的BibTeX格式进行引用,具体细节可以在UCX网站上找到。