源码安装Hyper MPI(开源组件)
前提条件
- 若为鲲鹏920专业版服务器且需要使用SDMA,则需要在BIOS中开启smmu。
- 已完成表1中依赖包的安装。
表1 每种操作系统需安装的依赖包 操作系统
依赖包
- openEuler 20.03(LTS-SP3)AArch64
- openEuler 22.03(LTS-SP2)AArch64
- openEuler 22.03(LTS-SP3)AArch64
- openEuler 22.03(LTS-SP4)AArch64
- Kylin Linux Advanced Server V10(Hydrogen)AArch64
- Kylin Linux Advanced Server V10 (Sword)AArch64
- Kylin Linux Advanced Server Industry V10 AArch64
- Kylin Linux Advanced Server V10 (Jasmine)
- Kylin Linux Advanced Server V10 (GFB)
- KylinSec OS Linux 3(Qomolangma) AArch64(3.5.2)
- KylinSec OS Linux 3(Qomolangma) AArch64(3.5.3)
- perl-Data-Dumper
- autoconf
- automake
- Libtool
- GCC编译器或毕昇编译器
说明:需要同时支持C、C++和Fortran语言的编译器。推荐版本为GCC 12.3.1和毕昇5.1.0.2
- GCC编译器包括gcc、g++和gfortran。
- 毕昇编译器包括clang、clang++和flang。
- libstdc++
- numactl
- numactl-devel
- binutils
- systemd-devel
- valgrind
- cmake3
- Flex
- rdma-core-devel(当使用RDMA时需要安装)
- sdma-dk(当使用SDMA时需要安装)
编译环境变量检查
- 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
- 执行以下命令,检查GCC/毕昇编译器版本,推荐版本为GCC 12.3.1/毕昇5.1.0.2是否安装。
- 执行以下命令,检查Libtool是否安装。
libtool --version
回显如以下类似信息,表示已安装Libtool。
libtool (GNU libtool) 2.4.2
GCC编译Hyper MPI软件包
Hyper MPI软件包包含Hyper MPI、HUCX和XUCG三个软件层,其中Hyper MPI的安装依赖于HUCX和XUCG,XUCG的安装依赖于HUCX。编译顺序为编译HUCX > 编译XUCG > 编译Hyper MPI。
- 编译HUCX。
- 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
- 执行以下命令,进入HUCX编译工作空间。
- 推荐使用git下载hucg源码。
- 执行以下命令,进入“autogen.sh”脚本所在目录。
- 执行以下命令,进行源码包安装。
./contrib/configure-opt --prefix=/path/to/install/hucx --enable-mt CC=gcc CXX=g++ FC=gfortran
- 使用SDMA功能时,若操作系统为openEuler 22.03 LTS SP4及以上版本,SDMA已集成到系统中,不需要用户安装SDMA驱动,在安装命令中无需指定--with-sdma参数。若为其他,需要用户安装SDMA驱动,并在安装命令中额外指定--with-sdma参数:
./contrib/configure-opt --prefix=/path/to/install/hucx --with-sdma=/path/to/install/sdma --enable-mt CC=gcc CXX=g++ FC=gfortran
- /path/to/install/hucx:表示HUCX的安装路径。
- /path/to/install/sdma:表示SDMA的安装路径。
- 若需要优化RDMA初始化时延,可以指定--with-opt-gid-table参数:
./contrib/configure-opt --prefix=/path/to/install/hucx --with-opt-gid-table --enable-mt CC=gcc CXX=g++ FC=gfortran
使用该优化参数编译出的包无法在openEuler 22.03 LTS SP2及之前的版本且使用hns板载RDMA网卡的环境上运行。
- osu_init耗时主要在UCX的初始化中,UCX中有一部分耗时来自于mlx5加速模块的初始化,如果要优化启动时延,可以将这部分初始化流程删除。执行./contrib/configure-opt时加入--without-devx --without-mlx5-dv关闭对mlx5网卡加速模块的编译。
make -j32
make -j32 install
make后面-j参数为并行编译参数,表示有多少CPU核数参与编译过程,请根据实际CPU核数进行指定。
- (可选)编译XUCG。
- 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
- 执行以下命令,进入XUCG编译工作空间。
- 推荐使用git下载xucg源码。
- 执行以下命令,进入“CMakeLists.txt”所在目录。
- 执行以下命令,进行源码包安装。
cmake3 .. -DCMAKE_INSTALL_PREFIX=/path/to/install/xucg -DCMAKE_BUILD_TYPE=Release -DUCG_BUILD_WITH_UCX=/path/to/install/hucx -DUCG_ENABLE_MT=ON -DUCG_BUILD_TESTS=OFF -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_Fortran_COMPILER=gfortran
- 启动Stars集合通信硬件卸载算法模块时,需要指定-DUCG_BUILD_PLANC_STARS=ON。若操作系统为openEuler 22.03 LTS SP4及以上版本,rdma-core已集成到系统中,不需要用户安装rdma-core,在安装命令中无需指定-DUCG_BUILD_RDMA_CORE_PREFIX参数。若为其他,需要用户安装rdma-core,并在安装命令中额外指定-DUCG_BUILD_RDMA_CORE_PREFIX参数:
cmake3 .. -DCMAKE_INSTALL_PREFIX=/path/to/install/xucg -DCMAKE_BUILD_TYPE=Release -DUCG_BUILD_WITH_UCX=/path/to/install/hucx -DUCG_ENABLE_MT=ON -DUCG_BUILD_TESTS=OFF -DUCG_BUILD_PLANC_STARS=ON -DUCG_BUILD_RDMA_CORE_PREFIX=/path/to/install/rdma-core -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_Fortran_COMPILER=gfortran
- /path/to/install/xucg:表示XUCG的安装路径。
- /path/to/install/rdma-core:表示rdma-core的安装路径。
make -j32
make -j32 install
make后面-j参数为并行编译参数,表示有多少CPU核数参与编译过程,请根据实际CPU核数进行指定。
- 编译Hyper MPI。
- 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
- 执行以下命令,进入HUCX编译工作空间。
- 推荐使用git下载hucg源码。
- 执行以下命令,进入“autogen.sh”脚本所在目录。
- 执行以下命令,进行Hyper MPI源码包安装。
./configure --prefix=/path/to/install/hmpi --with-platform=contrib/platform/mellanox/optimized --enable-mpi1-compatibility --with-ucx=/path/to/install/hucx --with-ucg=/path/to/install/xucg CC=gcc CXX=g++ FC=gfortran
make
make install
- /path/to/install/hmpi:表示Hyper MPI的安装路径。
- /path/to/install/hucx:表示HUCX的安装路径。
- /path/to/install/xucg:表示XUCG的安装路径。
./autogen.pl
./configure --prefix=/path/to/install/hmpi --with-platform=contrib/platform/mellanox/optimized --enable-mpi1-compatibility --with-ucx=/path/to/install/hucx CC=gcc CXX=g++ FC=gfortran
make
make install
- /path/to/install/hmpi:表示Hyper MPI的安装路径。
- /path/to/install/hucx:表示HUCX的安装路径。
毕昇编译Hyper MPI软件包
Hyper MPI包含Hyper MPI、HUCX和XUCG三个软件层,其中Hyper MPI的安装依赖于HUCX和XUCG,XUCG的安装依赖于HUCX。编译顺序为编译HUCX > 编译XUCG > 编译Hyper MPI。
- 编译HUCX。
- 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
- 下载HUCX源码包“hucx-v26.0.x.zip”。
下载地址:https://raw.gitcode.com/kunpengcompute/hucx/archive/refs/heads/v26.0.x.zip
- 将上述源码包上传至服务器HUCX源码包安装目录,如“/path/to/download/hucx”。
- 执行以下命令,进入HUCX源码包安装路径。
- 执行以下命令,解压上述源码包。
- 执行以下命令,进入“autogen.sh”脚本所在目录。
- 安装源码包。
./contrib/configure-opt --prefix=/path/to/install/hucx --enable-mt CC=clang CXX=clang++ FC=flang
- 使用SDMA功能时,若操作系统为openEuler 22.03 LTS SP4及以上版本,SDMA已集成到系统中,不需要用户安装SDMA驱动,在安装命令中无需指定--with-sdma参数。若为其他,需要用户安装SDMA驱动,并在安装命令中额外指定--with-sdma参数:
./contrib/configure-opt --prefix=/path/to/install/hucx --with-sdma=/path/to/install/sdma --enable-mt CC=clang CXX=clang++ FC=flang
- /path/to/install/hucx:表示HUCX的安装路径。
- /path/to/install/sdma:表示SDMA的安装路径。
- 若需要优化RDMA初始化时延,可以指定--with-opt-gid-table参数:
./contrib/configure-opt --prefix=/path/to/install/hucx --with-opt-gid-table --enable-mt CC=clang CXX=clang++ FC=flang
使用该优化参数编译出的包无法在openEuler 22.03 LTS SP2及之前的版本且使用hns板载RDMA网卡的环境上运行。
- osu_init耗时主要在UCX的初始化中,UCX中有一部分耗时来自于mlx5加速模块的初始化,如果要优化启动时延,可以将这部分初始化流程删除。执行./contrib/configure-opt时加入--without-devx --without-mlx5-dv关闭对mlx5网卡加速模块的编译。
make -j32
make -j32 install
make后面-j参数为并行编译参数,表示有多少CPU核数参与编译过程,请根据实际CPU核数进行指定。
- 编译XUCG。
- 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
- 执行以下命令,进入XUCG编译工作空间。
- 推荐使用git下载xucg源码。
- 执行以下命令,进入“CMakeLists.txt”所在目录。
- 执行以下命令,进行源码包安装。
cmake3 .. -DCMAKE_INSTALL_PREFIX=/path/to/install/xucg -DCMAKE_BUILD_TYPE=Release -DUCG_BUILD_WITH_UCX=/path/to/install/hucx -DUCG_ENABLE_MT=ON -DUCG_BUILD_TESTS=OFF -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang
- 启动Stars集合通信硬件卸载算法模块时,需要指定-DUCG_BUILD_PLANC_STARS=ON。若操作系统为openEuler 22.03 LTS SP4及以上版本,rdma-core已集成到系统中,不需要用户安装rdma-core,在安装命令中无需指定-DUCG_BUILD_RDMA_CORE_PREFIX参数。若为其他,需要用户安装rdma-core,并在安装命令中额外指定-DUCG_BUILD_RDMA_CORE_PREFIX参数:
cmake3 .. -DCMAKE_INSTALL_PREFIX=/path/to/install/xucg -DCMAKE_BUILD_TYPE=Release -DUCG_BUILD_WITH_UCX=/path/to/install/hucx -DUCG_ENABLE_MT=ON -DUCG_BUILD_TESTS=OFF -DUCG_BUILD_PLANC_STARS=ON -DUCG_BUILD_RDMA_CORE_PREFIX=/path/to/install/rdma-core -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang
- /path/to/install/xucg:表示XUCG的安装路径。
- /path/to/install/rdma-core:表示rdma-core的安装路径。
make -j32
make -j32 install
make后面-j参数为并行编译参数,表示有多少CPU核数参与编译过程,请根据实际CPU核数进行指定。
- 编译Hyper MPI。
- 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
- 执行以下命令,进入HUCX编译工作空间。
- 推荐使用git下载hucg源码。
- 执行以下命令,进入“autogen.sh”脚本所在目录。
- 执行以下命令,进行Hyper MPI源码包安装。
./configure --prefix=/path/to/install/hmpi --with-platform=contrib/platform/mellanox/optimized --enable-mpi1-compatibility --with-ucx=/path/to/install/hucx --with-ucg=/path/to/install/xucg CC=clang CXX=clang++ FC=flang
make
make install
- /path/to/install/hmpi:表示Hyper MPI的安装路径。
- /path/to/install/hucx:表示HUCX的安装路径。
- /path/to/install/xucg:表示XUCG的安装路径。