开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

源码安装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时需要安装)

编译环境变量检查

  1. 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
  2. 执行以下命令,检查GCC/毕昇编译器版本,推荐版本为GCC 12.3.1/毕昇5.1.0.2是否安装。
    • GCC编译器

      gcc -v

      检查回显信息中是否包含GCC以及版本信息。

    • 毕昇编译器

      clang -v

      检查回显信息中是否包含毕昇编译器,以及版本号是否正确。

  3. 执行以下命令,检查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。

  1. 编译HUCX。
    1. 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
    2. 执行以下命令,进入HUCX编译工作空间。

      cd /path/to/workspace

    3. 推荐使用git下载hucg源码。

      git clone https://gitcode.com/kunpengcompute/hucx

    4. 执行以下命令,进入“autogen.sh”脚本所在目录。

      cd hucx/

    5. 执行以下命令,进行源码包安装。

      ./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核数进行指定。

    1. 执行以下命令,加载HUCX环境变量。

      export LD_LIBRARY_PATH=/path/to/install/hucx/lib:$LD_LIBRARY_PATH

      export LIBRARY_PATH=/path/to/install/hucx/lib:$LIBRARY_PATH

      export C_INCLUDE_PATH=/path/to/install/hucx/include:$C_INCLUDE_PATH

      export CXX_INCLUDE_PATH=/path/to/install/hucx/include:$CXX_INCLUDE_PATH

  2. (可选)编译XUCG。
    1. 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
    2. 执行以下命令,进入XUCG编译工作空间。

      cd /path/to/workspace

    3. 推荐使用git下载xucg源码。

      git clone https://gitcode.com/kunpengcompute/xucg

    4. 执行以下命令,进入“CMakeLists.txt”所在目录。

      cd xucg/

    5. 执行以下命令,进行源码包安装。

      mkdir build && cd build

      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核数进行指定。

    1. 执行以下命令,加载XUCG环境变量。

      export LD_LIBRARY_PATH=/path/to/install/xucg/lib:$LD_LIBRARY_PATH

      export C_INCLUDE_PATH=/path/to/install/xucg/include:$C_INCLUDE_PATH

      export CPLUS_INCLUDE_PATH=/path/to/install/xucg/include:$CPLUS_INCLUDE_PATH

  3. 编译Hyper MPI
    1. 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
    2. 执行以下命令,进入HUCX编译工作空间。

      cd /path/to/workspace

    3. 推荐使用git下载hucg源码。

      git clone https://gitcode.com/kunpengcompute/hucx

    4. 执行以下命令,进入“autogen.sh”脚本所在目录。

      cd hucx/

    5. 执行以下命令,进行Hyper MPI源码包安装。

      ./autogen.pl

      ./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。

  1. 编译HUCX
    1. 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
    2. 下载HUCX源码包“hucx-v26.0.x.zip”。

      下载地址:https://raw.gitcode.com/kunpengcompute/hucx/archive/refs/heads/v26.0.x.zip

    3. 将上述源码包上传至服务器HUCX源码包安装目录,如“/path/to/download/hucx”。
    4. 执行以下命令,进入HUCX源码包安装路径。

      cd /path/to/download/hucx

    5. 执行以下命令,解压上述源码包。

      unzip hucx-v26.0.x.zip

    6. 执行以下命令,进入“autogen.sh”脚本所在目录。

      cd hucx-v26.0.x/

    7. 安装源码包。

      ./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核数进行指定。

    1. 执行以下命令,加载HUCX环境变量。

      export LD_LIBRARY_PATH=/path/to/install/hucx/lib:$LD_LIBRARY_PATH

      export C_INCLUDE_PATH=/path/to/install/hucx/include:$C_INCLUDE_PATH

      export CPLUS_INCLUDE_PATH=/path/to/install/hucx/include:$CPLUS_INCLUDE_PATH

  2. 编译XUCG。
    1. 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
    2. 执行以下命令,进入XUCG编译工作空间。

      cd /path/to/workspace

    3. 推荐使用git下载xucg源码。

      git clone https://gitcode.com/kunpengcompute/xucg

    4. 执行以下命令,进入“CMakeLists.txt”所在目录。

      cd xucg/

    5. 执行以下命令,进行源码包安装。

      mkdir build && cd build

      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核数进行指定。

    1. 执行以下命令,加载XUCG环境变量。

      export LD_LIBRARY_PATH=/path/to/install/xucg/lib:$LD_LIBRARY_PATH

      export C_INCLUDE_PATH=/path/to/install/xucg/include:$C_INCLUDE_PATH

      export CPLUS_INCLUDE_PATH=/path/to/install/xucg/include:$CPLUS_INCLUDE_PATH

  3. 编译Hyper MPI。
    1. 使用PuTTY工具,以Hyper MPI安装维护用户(例如“hmpi_master”)登录至作业执行节点。
    2. 执行以下命令,进入HUCX编译工作空间。

      cd /path/to/workspace

    3. 推荐使用git下载hucg源码。

      git clone https://gitcode.com/kunpengcompute/hucx

    4. 执行以下命令,进入“autogen.sh”脚本所在目录。

      cd hucx/

    5. 执行以下命令,进行Hyper MPI源码包安装。

      ./autogen.pl

      ./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的安装路径。