# 编译安装 UCX 1.15.0 与 OpenMPI 5.0.0:详尽指南
# 一、环境准备
首先,请确保您的系统满足以下基本要求:
- 操作系统:支持 Linux(如 Ubuntu 20.04 LTS)或其他类 Unix 操作系统。
- 开发工具包:安装必要的构建工具和库,例如
build-essential
,libnuma-dev
,pkg-config
等。 - 内核版本:对于最佳性能,建议使用最新稳定版内核。
- 需要支持 RDMA 的硬件环境或虚拟环境。
sudo apt-get update
sudo apt-get install -y build-essential libnuma-dev pkg-config
# 二、编译安装 UCX 1.15.0
- 下载 UCX 源码包:
wget https://github.com/openucx/ucx/releases/download/v1.15.0/ucx-1.15.0.tar.gz
tar -xzvf ucx-1.15.0.tar.gz
cd ucx-1.15.0
- 配置 UCX 编译选项:
mkdir build && cd build
../configure --prefix=/root/software/ucx/1.5.0
您可以根据实际需求添加更多配置选项,比如指定特定的网卡类型或者启用特定的功能。
- 编译并安装:
make -j 8
make install
- UCX 架构说明
- UCX 1.15.0 的架构如下图所示:
组件 | 角色 | 说明 |
---|---|---|
UCP | Protocol | 实现高级抽象,如标记匹配、流、连接协商和建立、多轨以及处理不同的内存类型。 |
UCT | Transport | 实现低级通信原语,如活动消息、远程内存访问和原子操作。 |
UCM | Memory | 通用的数据结构、算法和系统实用程序的集合。 |
UCP | Protocol | 截获内存注册缓存使用的内存分配和释放事件。 |
# 三、编译安装 OpenMPI 5.0.0
- 下载 OpenMPI 源码包:
wget https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.0.tar.gz
tar -xzvf openmpi-5.0.0.tar.gz
cd openmpi-5.0.0
- 配置 OpenMPI 编译选项,指定使用 UCX 作为传输层:
mkdir build && cd build
../configure --without-hcoll \
--enable-python-bindings \
--enable-mpirun-prefix-by-default \
--prefix=/root/software/openmpi/5.0.0-ucx-1.15.0 \
--with-ucx=/root/software/ucx/1.15.0 \
--enable-mca-no-build=btl-uct
注释
- 对于 OpenMPI 4.0 及更高版本,
btl_uct
组件可能存在编译错误。该组件对于使用 UCX 来说并不重要;因此可以通过--enable-mca-no-build=btl-uct
禁用:--enable-python-bindings
选项用于启用 Python 绑定。--enable-mpirun-prefix-by-default
选项用于在使用mpirun
启动 MPI 程序时自动添加--prefix
选项。--without-hcoll
选项用于禁用 HCOLL 组件。不设置编译时会报错cannot find -lnuma
与cannot find -ludev
的错误。
最后配置选项如下:
- 编译并安装:
make -j 8
make install
# 四、验证安装与设置环境变量
安装完成后,可以通过运行简单的 MPI 程序来验证 UCX 和 OpenMPI 是否成功集成:
mpirun -np 2 --mca pml ucx --mca btl ^vader,tcp,openib,uct -x UCX_NET_DEVICES=mlx5_0:1 hostname
(如果在 root 上运行则需要加上 --allow-run-as-root
选项,如果有 RDMA 设备可以设置 -x UCX_NET_DEVICES
)
注释
如果需要结合
Slurm
使用,可以参考 Launching with Slurm 。其中一种方式就是,先通过
salloc
分配资源,然后在分配的资源上运行mpirun
命令。此时--hostfile
、--host
、-n
等是不需要设置的,例如:
salloc -n 2
mpirun --mca pml ucx --mca btl ^vader,tcp,openib,uct -x UCX_NET_DEVICES=mlx5_0:1 hostname
如果一切正常,您会看到两台主机名的输出。为了方便使用,可以将 OpenMPI 的 bin 目录等添加到系统 PATH 环境变量中:
vim ~/.bashrc
export PATH=/root/software/openmpi/5.0.0-ucx-1.15.0/bin:$PATH
export LD_LIBRARY_PATH=/root/software/openmpi/5.0.0-ucx-1.15.0/lib:$LD_LIBRARY_PATH
export CPATH=/root/software/openmpi/5.0.0-ucx-1.15.0/include:$CPATH
export MANPATH=/root/software/openmpi/5.0.0-ucx-1.15.0/share/man:$MANPATH
source ~/.bashrc
# 五、UCX 性能测试
发送方:
ucx_perftest -c 0 -d mlx5_0:1
接收方:
ucx_perftest -c 1 -d mlx5_0:1 <server_hostname> -t tag_lat
总之,通过以上步骤,我们已经成功地从源代码编译并安装了 UCX 1.15.0 和 OpenMPI 5.0.0,并将其整合为一个高效稳定的高性能计算环境。在实际应用中,可以根据具体需求进一步优化配置以获得更优性能。