1.1 OpenMPI简介
OpenMPI是一个免费的、开源的MPI实现,兼容MPI-1和MPI-2标准。OpenMPI由开源社区开发维护,支持大多数类型的HPC平台,并具有很高的性能。
OpenMPI目前最新版本为openmpi-1.6+,官方网站:http://www.open-mpi.org/,可从官网免费下载Openmpi源码安装包。
1.2 安装OpenMPI
以OpenMPI 1.6.3为例:
$ tar zxvf openmpi-1.6.3.tar.gz
$ cd openmpi-1.6.3
$ ./configure --prefix=/public/software/mpi/openmpi-16-intel --enable-mpirun-prefix-by-default --without-psm CC=icc CXX=icpc FC=ifort F77=ifort
$ make -j 8 && make install
设置环境变量脚本:
vim /public/software/profile.d/openmpi-intel-env.sh
#!/bin/bash
export MPI_HOME=/public/software/mpi/openmpi-16-intel
export PATH=${MPI_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${MPI_HOME}/lib:${LD_LIBRARY_PATH}
export MANPATH=${MPI_HOME}/share/man:${MANPATH}
þ Tips:
1. OpenMPI安装会自动检测编译节点本地可用的通信网络设备,如需支持InfiniBand网络,请确保编译MPI前该节点已安装OFED驱动。
2. 执行OpenMPI安装目录$MPI_HOME/bin下的ompi_info命令,可查询当前OpenMPI配置信息。
1.3 编译MPI程序
OpenMPI提供了C/C++,Fortran等语言的MPI编译器,如下表所示:
语言类型MPI编译器CmpiccC++mpicxxFortran77mpif77Fortran90mpif90
MPI编译器是对底层编译器的一层包装,通过-show参数可以查看实际使用的编译器。比如:
$ mpicc -show
icc -I/public/software/mpi/openmpi-16-intel/include -pthread -L/public/software/mpi/openmpi-16-intel/lib -lmpi -ldl -lm -lnuma -Wl,--export-dynamic -lrt -lnsl -lutil
编译程序示例:
$ source /public/software/profile.d/openmpi-intel-env.sh
$ mpicc -o hello hello.c
$ mpif90 -o hello hello.f90
1.4 运行MPI程序
OpenMPI使用自带的OpenRTE进程管理器,启动命令为mpirun/mpiexec/orterun,基本格式如下:
$ mpirun -np N -hostfile <filename> <program>
Ÿ -np N:运行N个进程
Ÿ -hostfile:指定计算节点,文件格式如下:
node1 slots=8
node2 slots=8
slots=8代表可在该节点上执行8个进程,也可将node1和node2分别写8行。