文章目录

  • Mpich_linux-centos7.9系统下编译安装调用
    • 一、★Mpich软件定义:
    • 二、★Mpich软件版本:
    • 三、★Mpich2-1.4.1编译安装
      • 3.1静态库的GNU编译(lib文件只含有静态库)
      • 3.2动态库的Intel编译(lib文件含有动态库和静态库)
    • 四、★Mpich-3.4.3编译安装
      • 4.1Gnu编译版本
      • 4.2Intel编译版本
    • 五、★Mpich环境加载
      • 5.1个人主机环境
      • 5.2HPC集群环境
    • 六、★Mpich验证
      • 6.1 mpich验证GNU编译方式
      • 6.2 mpich验证Intel编译方式
    • 七、★Mpich并行计算调用
      • 7.1 并行方式区别
      • 7.2 mpich并行调用
    • 八、★最后

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

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

一、★Mpich软件定义:

MPI是一个跨语言的通讯协议,用于编写并行计算机。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能,大规模性,和可移植性。MPI在今天仍为高性能计算的主要模型。通过安装MPICH构建MPI编程环境,从而进行并行程序的开发。MPICH是MPI(Message-Passing Interface)的一个应用实现,支持最新的MPI-2接口标准,是用于并行运算的工具。
mpich官方网址
mpich github下载地址

二、★Mpich软件版本:

Mpich主流稳定的版本:
1. mpich2-1.4.1p1.tar.gz
2. mpich-3.4.3.tar.gz

三、★Mpich2-1.4.1编译安装

3.1静态库的GNU编译(lib文件只含有静态库)

第一种模式: 利用centos7.9自带的gnu编译器gcc/g++/gfortran4.8.5进行默认参数编译
应用范围: 不需要调用mpich动态库,且调用mpich进行编译的源码不含有fortran源码

# 这种模式下编译的mpich,产生的lib文件下是没有动态库*.so和fortran库文件libmpichf90.so
tar -zxvf mpich2-1.4.1p1.tar.gz
cd mpich2-1.4.1p1
./configure --prefix=指定mpich2安装路径
make
make install

第二种模式: 链接Intel编译器icc/icpc/ifort进行默认参数编译
应用范围: 系统已安装intel编译器并导入到当前环境中,不需要调用mpich动态库,且调用mpich进行编译的源码不含有fortran源码

# 这种模式下编译的mpich和intel进行了绑定,但产生的lib文件下是没有动态库*.so和fortran库文件libmpichf90.so
tar -zxvf mpich2-1.4.1p1.tar.gz
cd mpich2-1.4.1p1
CC=icc CXX=icpc FC=ifort F77=ifort \
./configure --prefix=指定mpich安装路径
make
make install
3.2动态库的Intel编译(lib文件含有动态库和静态库)

第一种模式: 利用centos7.9自带的gnu编译器gcc/g++/gfortran4.8.5进行允许动态库参数编译
应用范围: 需要调用mpich动态库,且调用mpich进行编译的源码含有fortran源码

# 这种模式下编译的mpich,产生的lib文件会有动态库*.so和fortran库文件libmpichf90.so
tar -zxvf mpich2-1.4.1p1.tar.gz
cd mpich2-1.4.1p1
./configure --prefix=指定mpich2安装路径 \
--enable-cc --enable-cxx \
--enable-fc --enable-f77 \
--enable-shared
make
make install

第二种模式: 利用Intel编译器icc/icpc/ifort进行允许动态库参数编译
应用范围: 系统已安装intel编译器并导入到当前环境中,需要调用mpich动态库,且调用mpich进行编译的源码含有fortran源码

# 这种模式下编译的mpich和intel进行了绑定,产生的lib文件下有动态库*.so和fortran库文件libmpichf90.so
tar -zxvf mpich2-1.4.1p1.tar.gz
cd mpich2-1.4.1p1
CC=icc CXX=icpc FC=ifort F77=ifort \
./configure --prefix=指定mpich安装路径 \
--enable-cc --enable-cxx \
--enable-fc --enable-f77 \
--enable-shard
make
make install

注意! Mpich2的版本中,mpich2以内的版本默认安装是没有加入允许构建动态库的参数的,所以如果不加编译好的库文件里是没有动态库文件的。这种情况会导致,一些调用mpich2软件在编译过程种因无法找到mpich的动态库而编译失败。

四、★Mpich-3.4.3编译安装

4.1Gnu编译版本

此版本直接调用centos7.9自带的gnu编译器进行编译,相对于mpic2版本中增加一个参数–with-device=ch4:ofi 绑定Fortran的参数改为 --enable-fortran

tar -zxvf mpich-3.4.3.tar.gz
cd mpich-3.4.3
./configure --prefix=指定mpich安装路径 \
--enable-cxx --enable-cc \
--enable-fortran \
--enable-shared \
--with-device=ch4:ofi
4.2Intel编译版本

此版本需要调用intel编译器进行编译,相对于mpic2版本中增加一个参数–with-device=ch4:ofi 绑定Fortran的参数改为 --enable-fortran

tar -zxvf mpich-3.4.3.tar.gz
cd mpich-3.4.3
CC=icc CXX=icpc FC=ifort F77=ifort \
./configure --prefix=指定mpich安装路径 \
--enable-cxx --enable-cc \
--enable-fortran \
--enable-shared \
--with-device=ch4:ofi

注意! Mpich3以内的版本都默认编译动态库,所以如果不想编译生成动态库文件,可以把参数–enable-shared替换成–enable-shared=no 如果不想链接fortran,直接删除参数–enable-fortran就可以了。

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

五、★Mpich环境加载

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

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

注意! 如果你的mpich 编译的时候使用了intel编译器,那么当你导入mpich环境的时候,也需要导入intel编译器的环境。

六、★Mpich验证

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

6.1 mpich验证GNU编译方式
mpichversion # 查看安装版本信息命令,如下图所示。所有mpich版本都适用

如上图所示,当发现MPICH CC /CXX/F77/FC后面指定是gcc/g++/gfortran的时候,说明当前的mpich编译的时候是指定了GNU编译器,且没有–enable-fortran参数,说明没有链接fortran库。

6.2 mpich验证Intel编译方式

如上图所示,当发现MPICH CC /CXX/F77/FC后面指定是icc/icpc/ifort的时候,说明当前的mpich编译的时候是指定了Intel编译器,同时有参数–enable-fortran,说明链接了Fortran库

七、★Mpich并行计算调用

7.1 并行方式区别

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

  1. openmp 是针对单台服务器上多核/多CPU并行计算,也就是说,OpenMP适合单台服务器共享内存结构上的并行计算,而不能进行多台服务器跨节点的并行计算。如果计算数据网格量大,需要多台服务器并行计算提高计算速度,那它就不适合。
  2. openmpi 是可以在单台服务器上多核/多CPU并行计算,也可以进行多台服务器跨节点的并行计算,同时在并行的通信网络标准上可以调用infinibind,也就是IB网络,它具有极高的吞吐量和极低的延迟,现在主流的可以达到100Gbps,当然还有更高的。适合超大规模的数据并行计算,在各大高性能超算中心都基本使用它。
  3. mpich 它和openmpi一样也是可以在单台和多台服务器之间进行并行计算,最主要的区别是在通信网络标准上它只能走Ethernet,也就是我们常见的RJ45口。虽然现在也有万兆的光口了,但是主流的还是10/40Gbps,所以在进行大规模数据并行计算的时候,是没有openmpi并行效率高的。适合中小规模的数据并行计算。
7.2 mpich并行调用

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

# 单台服务器并行调用
mpichversion  # 查看当前环境时候是否加载mpich,同时核对版本
ls -l dust # 进入到需要调用求解器所在的目录中,并查看求解器是否有可执行权限
chmod +x dust # 如果没有,就增加可执行权限
mpirun -np 8 ./dust # 运行并行命令, 8 是并行的核数,具体数值根据当前自己核数确定
# 多台服务器,跨节点并行调用
mpichversion  # 查看当前环境时候是否加载mpich,同时核对版本
ls -l dust # 进入到需要调用求解器所在的目录中,并查看求解器是否有可执行权限
chmod +x dust # 如果没有,就增加可执行权限
touch hostname # 新建多台服务器主机名文件
echo -e "node1\nnode2\nnode3" >> hostname# 写入node1 node2 node3,它们是服务器的主机名
mpirun -np 24 -f hostname ./dust # -f 指定读取主机名的文件hostname,并自动给每个主机分配8核

八、★最后

以上内容都是经过实战验证过的,因并行软件库在很多的CAE软件中都会调用,因此后续会继续编写openmpi的详细编译过程和在高性能集群中的调用命令。
OpenMPI_linux-centos7.9系统源码编译安装调用

【Mpich_linux-centos7.9系统下最全编译安装调用】相关推荐

  1. linux脚本安装gcc,在Linux系统下不需要编译安装GCC9,有仓库安装模板脚本

    本文给出[安装GCC9]仓库安装模板脚本,在Linux系统可以编译安装GCC9,但很多编译安装的应用,有难度. 复制以下代码,把它们保存到文本,然后给可执行权限,双击,终端运行,应为需要输入用户密码. ...

  2. 安装centos7步骤_Centos7下源码编译安装mysql5.7 详细步骤 小白也能安装

    .清理安装环境: # yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y # userdel -r mysql # rm -r ...

  3. Centos7.4系统下安装httpd,mariadb,php7.1环境运行禅道

    Centos7.4系统下安装httpd,mariadb,php7.1环境运行禅道 简介:本文介绍如何在Centos7.4系统下面使用yum命令安装httpd,php7.1与mariadb服务,并使用禅 ...

  4. Ubuntu18.04系统下,gcc编译过程分析、命令参数介绍及ELF文件格式学习

    GCC编译器背后的故事及常用命令.了解ELF文件格式 文章目录 GCC编译器背后的故事及常用命令.了解ELF文件格式 前言 一.GCC简介 二.GCC背后的战友 1.Binutils 2.C运行库 三 ...

  5. CentOS7下源码编译安装MySQL5.6.4

    CentOS7下源码编译安装MySQL5.6.4 写这篇博客的主要原因是:请看上一篇博客:CentOS7下更改MySQL5.6.4默认的数据存储位置.对,当初通过rpm安装的mysql5.6.4,一切 ...

  6. Linux 系统下各种包的安装方法

    一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd soft.version.rpm所在 ...

  7. Nginx在Linux(centos7)环境下的下载与安装

    Nginx在Linux(centos7)环境下的下载与安装 一.下载Nginx 1.免费的开源版本官方网址 2.选择需要下载的版本 二.安装Nginx 1.安装前准备(需要安装相关依赖库) 2.安装N ...

  8. centos lnmp源码安装mysql_CentOS 6.6 下源码编译安装MySQL 5.7.5

    说明:CentOS 6.6 下源码编译安装MySQL 5.7.5 1. 安装相关工具 # yum -y install gcc-c++ ncurses-devel cmake make perl \ ...

  9. ubuntu安装python_ubuntu18.04下源码编译安装最新版本Python3

    原文链接:ubuntu18.04下源码编译安装最新版本Python3 截止到2019年4月9日,Python3最新的版本是3.7.3. 在ubuntu18.04中已经安装的Python3版本是3.6. ...

最新文章

  1. [JVM-1]Java运行时数据区域
  2. 【MAC】Ncnn 编译so文件方案
  3. atomic原子类实现机制_并发编程:并发操作原子类Atomic以及CAS的ABA问题
  4. 关于[super dealloc]
  5. RuoYi-Cloud 登陆 /code 获取验证码出错
  6. 【kafka】Replication factor: 1 larger than available brokers:0
  7. 手机越“清理”越卡顿,清理软件“坑”过你吗?
  8. 简易java电子词典_使用Android简单实现有道电子词典
  9. MapGIS Mobile开发
  10. 2022-2027年(新版)中国钢铁行业产量趋势及供需形势预测报告
  11. 怦然心动(Flipped)-5
  12. Redis+Zookeeper+NIO+JVM+Dubbo+mq+Kafka+ElasticSearch+POI相关面试题
  13. 根据出生日期判断星座
  14. Java——IDEA
  15. java接入支付宝网站api
  16. 列出MSSQL所有数据库名、所有表名、所有字段名
  17. redefinition; different type modifiers错误解决
  18. k折交叉验证 python_Python实现K折交叉验证法的方法步骤
  19. 骨龄预测代码学习(一)
  20. linux系统下html中文乱码

热门文章

  1. 中介分水岭 机构大数据风生水起
  2. c 盘空间又满了?微信清理神器帮你释放空间
  3. 高通SDM450韦根数据输入过快导致数据丢失问题分析处理
  4. DARPA世界建模者(World Modelers)项目介绍
  5. css奇数偶数选择器_css高级选择器和基本选择器
  6. 开源html5小游戏6,html5简易小游戏 - strip_liu的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. mysql-pius代码生成网站_MyBatis-Plus代码生成工具
  8. 1卢布等于多少人民币(2014年04月23日)
  9. Nginx 内存池似懂非懂?一文带你看清高性能服务器内存池
  10. 实战 - 谷粒商城项目:高级上篇First