
# Spectrum MPI
#### 操作场景
本节指导用户安装和使用IBM Spectrum MPI（以IBM Spectrum MPI v10.1为例）。
其中，IBM Spectrum MPI v10.1版本当前支持的操作系统列表如下：
- **IBM Spectrum MPI 10.1.0.1 Eval for x86_64 Linux**
  - Red Hat Enterprise Linux version 6.6及其之后的版本
  
  - Red Hat Enterprise Linux version 7.1及其之后的版本
  
  - SUSE Linux Enterprise Server version 11 SP4
  
  - SUSE Linux Enterprise Server version 12及其之后的版本
   
- **IBM Spectrum MPI 10.1.0.2 Eval for Power 8 Linux**
  - Red Hat Enterprise Linux version 7.3及其之后的版本
   
 
#### 前提条件
已配置弹性云服务器免密登录。
#### 操作步骤
1. 获取软件包。
   
   1. 获取IBM Spectrum MPI软件包。 下载地址：<https://www-01.ibm.com/marketing/iwm/iwm/web/preLogin.do?source=swerpsysz-lsf-3>
      获取的软件包一般为两个，包括license和软件两部分，例如，获取的IBM Spectrum MPI软件包为：
      **smpi_lic_s-10.1Eval-rh7_Sep15.x86_64.rpm**
      **ibm_smpi-10.1.0.3eval_170901-rh7_Apr11.x86_64.rpm**
      
   
   2. 下载需要的HPC-X工具套件。 IBM MPI在EDR SR-IOV场景下的运行需要HPC-X提供的MXM库的支持，HPC-X 的下载需要参考弹性云服务器操作系统的版本以及IB驱动版本，例如，下载的HPC-X版本为：hpcx-v2.0.0-gcc-MLNX_OFED_LINUX-4.2-1.2.0.0-redhat7.3-x86_64.tbz。
      下载地址：<https://developer.nvidia.com/networking/hpc-x>
      
   
   
   
   
2. 安装HPC-X工具套件。 
   1. 将[1]中下载的HPC-X压缩包上传至运行MPI的弹性云服务器内。
   
   2. 执行以下命令，解压HPC-X工具套件。 **$ tar xvf hpcx-v2.0.0-gcc-MLNX_OFED_LINUX-4.2-1.2.0.0-redhat7.3-x86_64.tbz**
      
   
   3. 执行以下命令，设置HPC-X环境变量。 **$ cd hpcx-v2.0.0-gcc-MLNX_OFED_LINUX-4.2-1.2.0.0-redhat7.3-x86_64**
      **$ export HPCX_HOME=$PWD**
      
   
   
   
   
3. 安装IBM Spectrum MPI。 
   1. 将[1]中下载的MPI软件包上传至运行MPI的弹性云服务器内。
   
   2. 执行以下命令，切换至root用户。 **$ sudo su -**
      
   
   3. 执行以下命令，设置环境变量。
      - 如果选择自动接受IBM Spectrum MPI安装许可协议，执行以下命令： **# export IBM_SPECTRUM_MPI_LICENSE_ACCEPT=yes**
        
      
      - 如果选择手动接受IBM Spectrum MPI安装许可协议，执行以下命令： **# export IBM_SPECTRUM_MPI_LICENSE_ACCEPT=no**
        
       
   
   4. 安装License部分。
      - 选择自动接受IBM Spectrum MPI安装许可协议的，执行以下命令： **# rpm -ivh smpi_lic_s-10.1Eval-rh7_Sep15.x86_64.rpm**
        
      
      - 选择手动接受IBM Spectrum MPI安装许可协议的，执行以下命令： **# rpm -ivh ibm_smpi_lic_s-10.1Eval-rh7_Sep15.x86_64.rpm**
        图1手动接受IBM Spectrum MPI安装协议   
        ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0121763245.png "点击放大")
        并根据界面提示，执行以下命令，运行脚本：
        **# sh /opt/ibm/spectrum_mpi/lap_se/bin/accept_spectrum_mpi_license.sh**
        
       
   
   5. 执行以下命令，安装软件部分。 **# rpm -ivh ibm_smpi-10.1.0.3eval_170901-rh7_Apr11.x86_64.rpm**
      图2安装软件   
      ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0121763247.png "点击放大") 
   
   
   
   
4. 配置MPI环境变量。 
   1. 默认情况下，Spectrum MPI会安装至"/opt/ibm/spectrum_mpi"目录。该场景下需要设置如下环境变量： **export MPI_ROOT=/opt/ibm/spectrum_mpi**
      **export LD_LIBRARY_PATH=$MPI_ROOT/lib:$LD_LIBRARY_PATH**
      **export PATH=$MPI_ROOT/bin:$PATH**
      **export MANPATH=$MPI_ROOT/share/man:$MANPATH**
      **unset MPI_REMSH**
      
   
   2. 执行以下命令，查看环境变量导入是否成功。 ****#** which mpirun**
      图3查看环境变量   
      ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0121763370.png) 
   
   
   
   
5. 执行以下命令，在单个弹性云服务器上通过Spectrum MPI运行可执行文件。 
   1. 执行以下命令，编辑文件。 ****#** cd**
      ****#** vi hello.c**
      编辑内容如下：
      ```
      #include<mpi.h>
      #include<stdio.h>
      int main(intargc, char**argv){
      //Initialize the MPI environment
      MPI_Init(NULL, NULL);
      //Get the number of processes
      int world_size;
      MPI_Comm_size(MPI_COMM_WORLD, &world_size);
      //Get the rank of the process
      int world_rank;
      MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
      //Get the name of the processor
      char processor_name[MPI_MAX_PROCESSOR_NAME];
      int name_len;
      MPI_Get_processor_name(processor_name, &name_len);     
      //Print off a hello world message
      printf("Hello world from processor %s, rank %d"" out of %d processors\n",      processor_name, world_rank, world_size);
      //FinalizetheMPIenvironment.
      MPI_Finalize();
      }
      ```
      
   
   2. 执行以下命令，生成可执行文件，假设在/home/linux目录下生成。 ****#** mpicc hello.c -o spe_hello**
      ![](https://support.huaweicloud.com/usermanual-hpc/public_sys-resources/note_3.0-zh-cn.png)
      不同版本的MPI运行的hello文件是不同的，因此，如果更换了MPI版本，需要重新执行命令**#** **mpicc hello.c -o spe_hello**进行编译，生成新的可执行文件。
      
   
   3. 执行以下命令，在单个ECS上运行Spectrum MPI。 **# mpirun --allow-run-as-root -np 2 /root/** **spe_hello**
      系统回显如[图4]所示。
      图4运行结果   
      ![](https://support.huaweicloud.com/usermanual-hpc/zh-cn_image_0121763182.png "点击放大") 
   
   
   
   
 
