宝禄计算

 
登录 注册
 

并行计算-OpenMPI编译

1.1 OpenMPI简介

OpenMPI是一个免费的、开源的MPI实现,兼容MPI-1和MPI-2标准。OpenMPI由开源社区开发维护,支持大多数类型的HPC平台,并具有很高的性能。

OpenMPI目前最新版本为openmpi-1.6+,官方网站: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行。