统一集体通信(UCC)
UCC 是一个灵活、完整且功能丰富的集体通信操作 API 和库,适用于当前和新兴的编程模型和运行时环境。
设计目标
- 高度可扩展和高性能的集体操作,适用于 HPC、AI/ML 和 I/O 工作负载
- 支持各种编程模型的非阻塞集体操作
- 灵活的资源分配模型
- 支持松弛排序模型
- 灵活的同步模型
- 重复性集体操作(初始化一次,多次调用)
- 硬件集体操作作为一等公民
UCC 组件架构
贡献
感谢您对为 UCC 做出贡献的兴趣,请查看 贡献 文件中的技术和法律指南。
所有贡献者必须遵守 "会员自愿共识标准" 和 "出口合规贡献提交" 政策。
许可证
UCC 采用 BSD 风格的许可证,详见 LICENSE 文件。
所需软件包
-
- UCC 使用 UCX 的 UCS 组件提供的实用工具
-
CUDA(可选)
- UCC 支持 CUDA 集体操作。要编译支持 CUDA,请安装 NVIDIA CUDA 11.0 或更高版本。
-
HIP(可选)
- UCC 支持使用 HIP 的 AMD GPU。安装 ROCM/HIP 的说明可在 AMD ROCM 找到。
-
Doxygen
- UCC 使用 Doxygen 生成 API 文档
编译和安装
开发者构建
$ ./autogen.sh
$ ./configure --prefix=<ucc-install-path> --with-ucx=<ucx-install-path>
$ make
构建文档
$ ./autogen.sh
$ ./configure --prefix=<ucc-install-path> --with-docs-only
$ make docs
Open MPI 和 UCC 集体操作
编译 UCX
$ git clone https://github.com/openucx/ucx
$ cd ucx
$ ./autogen.sh; ./configure --prefix=<ucx-install-path>; make -j install
编译 UCC
$ git clone https://github.com/openucx/ucc
$ cd ucc
$ ./autogen.sh; ./configure --prefix=<ucc-install-path> --with-ucx=<ucx-install-path>; make -j install
编译 Open MPI
$ git clone https://github.com/open-mpi/ompi
$ cd ompi
$ ./autogen.pl; ./configure --prefix=<ompi-install-path> --with-ucx=<ucx-install-path> --with-ucc=<ucc-install-path>; make -j install
运行 MPI 程序
$ mpirun -np 2 --mca coll_ucc_enable 1 --mca coll_ucc_priority 100 ./my_mpi_app
运行 OpenSHMEM 程序
$ mpirun -np 2 --mca scoll_ucc_enable 1 --mca scoll_ucc_priority 100 ./my_openshmem_app
支持的传输
- UCX/UCP
- InfiniBand、ROCE、Cray Gemini 和 Aries、共享内存
- SHARP
- CUDA
- NCCL
- RCCL