
# 安装和使用IB驱动自带的Open MPI
#### 操作场景
本节操作指导用户在BMS上安装和使用IB驱动自带的Open MPI（以版本4.0.2a1为例）。
对于集群中的每台BMS，都需要执行该操作。
#### 前提条件
已配置BMS集群间互相免密登录。
#### 操作步骤
1. 查询是否安装了IB驱动 
   1. 执行以下命令，查询是否已成功安装IB驱动。 **$ ls /usr/mpi/gcc/openmpi-4.0.2a1/bin/mpirun**
      **$ rpm -qa \| grep mlnx-ofa**
      图1检查IB驱动   
      ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0231539267.png "点击放大") 
   
   2. 查看回显结果。
      - 如果回显如[图1]所示，表示已安装IB驱动，执行[步骤3]。
      
      - 如果未安装IB驱动，执行[步骤2]。
       
   
   
   
   
2. 安装IB驱动。
   
   1. 下载安装包"MLNX_OFED_LINUX-4.6-1.0.1.1-rhel7.6alternate-aarch64.tgz"。 下载地址：<https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/>
      图2IB驱动的下载页面   
      ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0231450781.png "点击放大") 
   
   2. 执行以下命令，安装软件包。 **# yum install tk tcl -y**
      **# tar -xvf MLNX_OFED_LINUX-4.6-1.0.1.1-rhel7.6alternate-aarch64.tgz**
      **# cd MLNX_OFED_LINUX-4.6-1.0.1.1-rhel7.6-x86_64/**
      **# ./mlnxofedinstall**
      
   
   
   
   
3. 安装配置ucx。
   
   1. 下载ucx安装包 **# cd /opt \&\& wget https://github.com/openucx/ucx/releases/download/v1.6.0/ucx-1.6.0.tar.gz**
      
   
   
   
   2. 解压ucx包 **# tar -xvf ucx-1.6.0.tar.gz**
      
   
   3. 编译安装ucx
   
   
   **# cd /opt/ucx-1.6.0**
   **# yum install autoconf automake libtool numactl-devel -y**
   **# ./contrib/configure-release --prefix=/opt/ucx160 --enable-optimizations**
   **# make \&\& make install**
   
   
4. 配置ucx。 
   1. 创建非root用户rhel **# useradd rhel; su - rhel**
      
   
   2. 查询pkey，将查询到的值去掉第三位替换[4.d]中的{pkey}。
      **# cat /sys/class/infiniband/mlx5_0/ports/1/pkeys/\* \| grep -v 0000 \| head -n1**
      例如 查询到是0x8f05，去掉第三位后0xf05。
      图3查询pkey   
      ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0231450782.png "点击放大") 
   
   3. 获取ucx PKEY。 **# ucx_info -c \| grep -i pkey \> ucx.env**
      
   
   4. 替换ucx中的PKEY。
      **# sed -i 's/0x\[a-f0-9\]\*/{pkey}/g' ucx.env**
      本例中执行**sed -i 's/0x\[a-f0-9\]\*/0xf05/g' ucx.env**
      图4替换ucx中的PKEY   
      ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0231450783.png "点击放大") 
   
   5. 将ucx pkey设置为环境变量。 **# sed -i 's/\^UCX/export UCX/g' ucx.env**
      **# cat ucx.env \>\> \~/.bashrc**
      
   
   
   
   
5. 配置mpi环境变量。 
   1. 使用vim编辑"\~/.bashrc"文件，添加如下配置内容： **export PATH=$PATH:/usr/mpi/gcc/openmpi-4.0.2a1/bin**
      **export LD_LIBRARY_PATH=/usr/mpi/gcc/openmpi-4.0.2a1/lib64**
      
   
   2. 执行以下命令，查看MPI环境变量是否正常。 **$ which mpirun**
      图5查看IB 驱动自带的Open MPI 环境变量   
      ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0231450784.png "点击放大")
      如果回显如[图5]所示，表示环境变量配置成功。
      
   
   3. 执行以下命令，在单台BMS上运行IB驱动自带的Open MPI。 #**mpirun -np 2 -mca btl_openib_if_include "mlx5_0:1" -x MXM_IB_USE_GRH=y /usr/mpi/gcc/openmpi-3.1.0rc2/tests/imb/IMB-MPI1 PingPong**
      图6运行IB驱动自带的Open MPI   
      ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0231450785.png "点击放大") 
   
   
   
   
 
