安装和使用社区OpenMPI
操作场景
本节指导用户在BMS上安装和使用社区OpenMPI(以4.0.2版本为例)。
对于集群中的每台BMS,都需要执行该操作。
前提条件
已配置BMS集群间互相免密登录。
操作步骤
- 安装OpenMPI。
- 下载社区OpenMPI,版本号为“openmpi-4.0.2.tar.bz2”。
下载地址:https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.2.tar.bz2
- 将下载的OpenMPI压缩包拷贝至BMS内(建议在“/home/rhel”目录下)。
- 执行以下命令,解压软件包。
# tar -xzvf openmpi-4.0.2.tar.bz2
# cd openmpi-4.0.2
- 执行以下命令,安装所需要的依赖包,安装之前请确保BMS能与外网连通。
# yum install binutils-devel.x86_64 gcc-c++ autoconf automake libtool
图1 安装binutils-devel.x86_64等依赖包成功 - 执行以下命令,安装编译OpenMPI。
# ./openmpi-4.0.2/configure --prefix=/opt/openmpi-402--enable-mpirun-prefix-by-default --enable-mpi1-compatibility --with-ucx=/opt/ucx160
# make -j 128 && make install
图2 OpenMPI安装成功
- 下载社区OpenMPI,版本号为“openmpi-4.0.2.tar.bz2”。
- 配置MPI环境变量。
- 普通用户下,在“~/.bashrc”中添加如下环境变量:
export PATH=$PATH:/opt/openmpi-310/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/openmpi-310/lib
- 执行以下命令,导入配置的MPI环境变量。
- 执行以下命令,查看MPI环境变量是否正常。
回显如图3所示表示环境变量正常。
- 普通用户下,在“~/.bashrc”中添加如下环境变量:
- 执行以下命令,在单个BMS上运行社区OpenMPI。
- 执行以下命令,生成可执行文件。
$ vi hello.c
编辑内容如下:
#include<mpi.h> #include<stdio.h> int main(int argc, 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); //Finalize the MPI environment. MPI_Finalize(); }
$ mpicc hello.c -o hello
不同版本的MPI运行的hello文件是不同的,都需要使用命令mpicc hello.c -o hello对hello.c文件重新编译。
- 执行以下命令,在单个BMS上运行社区OpenMPI。
$ mpirun -np 2 /home/rhel/hello
回显如图4所示,表示单个BMS上运行社区OpenMPI成功。
- 执行以下命令,生成可执行文件。