【OpenMPI_linux-centos7.9系统源码编译安装调用】

文章目录

        • Linux_centos7.9 并行软件openmpi编译安装调用
        • 一、★OpenMPI定义
        • 二、★安装环境说明
        • 三、★OpenMPI编译安装
          • 3.1 GNU编译默认安装方式
          • 3.2 GNU编译绑定C++和FORTRAN方式
          • 3.3 Intel编译器默认安装方式
          • 3.4 Intel编译绑定C++和FORTRAN方式
        • 四、★Openmpi环境加载
          • 4.1 个人主机环境
          • 4.2 HPC集群环境
        • 五、★Openmpi验证
        • 六、★Openmpi并行计算调用
          • 6.1 主流并行软件区别
          • 6.2 单台服务器并行调用
          • 6.3 多台服务器,跨界点并行调用
        • 七、最后

Linux_centos7.9 并行软件openmpi编译安装调用

本篇主要是讲解在linux-centos7.9系统(适用7~7.9)中,如何编译各个版本的Openmpi,并导入到当前用户或系统环境中,以及编译过程中重要参数,编译后如何调用等。

一、★OpenMPI定义

OpenMPI 是一个开源消息传递接口实现,由学术、研究和行业合作伙伴组成的联盟开发和维护。它支持的网络类型包括但不限于: various protocols over Ethernet (TCP, iWARP, UDP, raw Ethernet frames), shared memory, and InfiniBand。

软件官网地址

软件下载地址

二、★安装环境说明

Linux系统:centos7.9

编译器版本:GNU4.8.5/Intel_parallel_2020

openmpi版本:openmpi-4.1.1.tar.gz

三、★OpenMPI编译安装
3.1 GNU编译默认安装方式
# GNU编译器(gcc/g++/gfortran 4.8.5)
tar -zxvf openmpi-4.1.1.tar.gz
cd openmpi-4.1.1
./configure --prefix=指定openmpi安装路径
make
make install
3.2 GNU编译绑定C++和FORTRAN方式
# GNU编译器(gcc/g++/gfortran 4.8.5)
tar -zxvf openmpi-4.1.1.tar.gz
cd openmpi-4.1.1
./configure --prefix=指定openmpi安装路径 \
--enable-mpi-cxx \
--enable-mpi-fortran \
--enable-shared
3.3 Intel编译器默认安装方式
# Intel编译器(icc/icpc/ifort 2020)
tar -zxvf openmpi-4.1.1.tar.gz
cd openmpi-4.1.1
./configure --prefix=指定openmpi安装路径 \
CC=icc CXX=icpc FC=ifort F77=ifort
3.4 Intel编译绑定C++和FORTRAN方式
# Intel编译器(icc/icpc/ifort 2020)
tar -zxvf openmpi-4.1.1.tar.gz
cd openmpi-4.1.1
./configure --prefix=指定openmpi安装路径 \
CC=icc CXX=icpc FC=ifort F77=ifort \
--enable-mpi-cxx \
--enable-mpi-fortran \
--enable-shared

注意! 无论是GUN或是Intel编译,都建议使用绑定C++和FORTRAN的方式进行编译安装,它会比默认安装方式多生成libmpi_cxx.so、mpif.h等动态库和头文件,根据作者经验在后续很多开源CAE软件调用openmpi的时候,都需要调用。

四、★Openmpi环境加载

无论哪个版本的openmpi安装完成后,我们需要调用它的可执行文件、库文件等,都需要导入到当前的环境中,这里给出两种模式的导入方式,第一种情况适合在个人主机linux操作系统,第二种情况适合在管理HPC(高性能计算集群)的环境下。

4.1 个人主机环境
vim ~/.bashrc # 打开个人环境配置文件.bashrc,增加如下命令,保存退出
export MPI_ROOT=指定openmpi的安装路径
export PATH=$MPI_ROOT/bin:$PATH
export LD_LIBRARY_PATH=$MPI_ROOT/lib:$LD_LIBRARY_PATH
source ~/.bashrc # 立即生效
4.2 HPC集群环境
module avail  #确定当前是否安装Environment Modules软件包,如果有可以看到环境配置文件路径
cd /当前自己环境的路径/modules5/modulefiles #进入到自己Environment Modules中的配置目录中
mkdir openmpi;cd openmpi 
vim 4.1.1  # 新建文件,以openmpi的版本号为名字加以区分,增加如下命令,最后保存退出
#%Module1.0
## Module file created by author
conflict openmpi
proc ModulesHelp { } {
puts stderr "by gcc 4.8.5"
}
prepend-path PATH "指定openmpi的安装路径/bin"
prepend-path LD_LIBRARY_PATH "指定openmpi的安装路径/lib"
五、★Openmpi验证

无论哪种导入方式,当导入openmpi环境成功后,我们就需要验证一下是否导入成功。

ompi_info |less  # 查看openmpi所有安装信息
which mpirun #查看是否有路径输出,并且是否和自己指定的安装路径相同

【OpenMPI_linux-centos7.9系统源码编译安装调用】_第1张图片

如上图所示,可以查看openmpi编译配置时候的相关信息,如版本号(4.1.1)、配置参数(–enable-*)、是否绑定c++/fortran等。

六、★Openmpi并行计算调用

在调用openmpi前,一定要保证openmpi的环境已经导入当前的环境中,求解器编译的时候加载的是什么版本的openmpi,那么在进行并行计算的时候也要加载对应的版本。举例的求解器为我在Dust_Windows_cygwin编译安装文章中编译的求解器。Dust-Linux_Centos7.9离线编译安装

6.1 主流并行软件区别

注意! 在调用openmpi前,首先了解一下现在主流的几种并行调用方式:openmp openmpi mpich

  1. openmp 是针对单台服务器上多核/多CPU并行计算,也就是说,OpenMP适合单台服务器共享内存结构上的并行计算,而不能进行多台服务器跨节点的并行计算。如果计算数据网格量大,需要多台服务器并行计算提高计算速度,那它就不适合。
  2. openmpi 是可以在单台服务器上多核/多CPU并行计算,也可以进行多台服务器跨节点的并行计算,同时在并行的通信网络标准上可以调用infinibind,也就是IB网络,它具有极高的吞吐量和极低的延迟,现在主流的可以达到100Gbps,当然还有更高的。适合超大规模的数据并行计算,在各大高性能超算中心都基本使用它。
  3. mpich 它和openmpi一样也是可以在单台和多台服务器之间进行并行计算,最主要的区别是在通信网络标准上它只能走Ethernet,也就是我们常见的RJ45口。虽然现在也有万兆的光口了,但是主流的还是10/40Gbps,所以在进行大规模数据并行计算的时候,是没有openmpi并行效率高的。适合中小规模的数据并行计算。
6.2 单台服务器并行调用
# 一台服务器内部核数并行
ompi_info |less  # 查看当前环境时候是否加载mpich,同时核对版本
ls -l dust # 进入到需要调用求解器所在的目录中,并查看求解器是否有可执行权限
chmod +x dust # 如果没有,就增加可执行权限
mpirun -np 8 ./dust # 运行并行命令, 8 是并行的核数,具体数值根据当前自己核数确定
6.3 多台服务器,跨界点并行调用
# 多台服务器通过IB交换机跨节点并行
ompi_info |less  # 查看当前环境时候是否加载mpich,同时核对版本
ls -l dust # 进入到需要调用求解器所在的目录中,并查看求解器是否有可执行权限
chmod +x dust # 如果没有,就增加可执行权限
touch hostname # 新建多台服务器主机名文件
echo -e "node1\nnode2\nnode3" >> hostname # 写入node1 node2 node3,它们是计算服务器的主机名
mpirun --mca btl self,openib -np 32 -hostfile  hostname ./dust # -hostfile 指定读取主机名的文件hostname,并自动给每个主机分配8核
七、最后

以上内容都是经过实战验证过的,编译过程和mpich编译有许多相同之处,可以借鉴我的另一篇文章:

Mpich_linux-centos7.9系统下编译安装调用

你可能感兴趣的:(linux,网络,运维,服务器,centos)