【Mpich_linux-centos7.9系统下最全编译安装调用】
文章目录
- 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
- openmp 是针对单台服务器上多核/多CPU并行计算,也就是说,OpenMP适合单台服务器共享内存结构上的并行计算,而不能进行多台服务器跨节点的并行计算。如果计算数据网格量大,需要多台服务器并行计算提高计算速度,那它就不适合。
- openmpi 是可以在单台服务器上多核/多CPU并行计算,也可以进行多台服务器跨节点的并行计算,同时在并行的通信网络标准上可以调用infinibind,也就是IB网络,它具有极高的吞吐量和极低的延迟,现在主流的可以达到100Gbps,当然还有更高的。适合超大规模的数据并行计算,在各大高性能超算中心都基本使用它。
- 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系统下最全编译安装调用】相关推荐
- linux脚本安装gcc,在Linux系统下不需要编译安装GCC9,有仓库安装模板脚本
本文给出[安装GCC9]仓库安装模板脚本,在Linux系统可以编译安装GCC9,但很多编译安装的应用,有难度. 复制以下代码,把它们保存到文本,然后给可执行权限,双击,终端运行,应为需要输入用户密码. ...
- 安装centos7步骤_Centos7下源码编译安装mysql5.7 详细步骤 小白也能安装
.清理安装环境: # yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y # userdel -r mysql # rm -r ...
- Centos7.4系统下安装httpd,mariadb,php7.1环境运行禅道
Centos7.4系统下安装httpd,mariadb,php7.1环境运行禅道 简介:本文介绍如何在Centos7.4系统下面使用yum命令安装httpd,php7.1与mariadb服务,并使用禅 ...
- Ubuntu18.04系统下,gcc编译过程分析、命令参数介绍及ELF文件格式学习
GCC编译器背后的故事及常用命令.了解ELF文件格式 文章目录 GCC编译器背后的故事及常用命令.了解ELF文件格式 前言 一.GCC简介 二.GCC背后的战友 1.Binutils 2.C运行库 三 ...
- CentOS7下源码编译安装MySQL5.6.4
CentOS7下源码编译安装MySQL5.6.4 写这篇博客的主要原因是:请看上一篇博客:CentOS7下更改MySQL5.6.4默认的数据存储位置.对,当初通过rpm安装的mysql5.6.4,一切 ...
- Linux 系统下各种包的安装方法
一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd soft.version.rpm所在 ...
- Nginx在Linux(centos7)环境下的下载与安装
Nginx在Linux(centos7)环境下的下载与安装 一.下载Nginx 1.免费的开源版本官方网址 2.选择需要下载的版本 二.安装Nginx 1.安装前准备(需要安装相关依赖库) 2.安装N ...
- 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 \ ...
- ubuntu安装python_ubuntu18.04下源码编译安装最新版本Python3
原文链接:ubuntu18.04下源码编译安装最新版本Python3 截止到2019年4月9日,Python3最新的版本是3.7.3. 在ubuntu18.04中已经安装的Python3版本是3.6. ...
最新文章
- [JVM-1]Java运行时数据区域
- 【MAC】Ncnn 编译so文件方案
- atomic原子类实现机制_并发编程:并发操作原子类Atomic以及CAS的ABA问题
- 关于[super dealloc]
- RuoYi-Cloud 登陆 /code 获取验证码出错
- 【kafka】Replication factor: 1 larger than available brokers:0
- 手机越“清理”越卡顿,清理软件“坑”过你吗?
- 简易java电子词典_使用Android简单实现有道电子词典
- MapGIS Mobile开发
- 2022-2027年(新版)中国钢铁行业产量趋势及供需形势预测报告
- 怦然心动(Flipped)-5
- Redis+Zookeeper+NIO+JVM+Dubbo+mq+Kafka+ElasticSearch+POI相关面试题
- 根据出生日期判断星座
- Java——IDEA
- java接入支付宝网站api
- 列出MSSQL所有数据库名、所有表名、所有字段名
- redefinition; different type modifiers错误解决
- k折交叉验证 python_Python实现K折交叉验证法的方法步骤
- 骨龄预测代码学习(一)
- linux系统下html中文乱码
热门文章
- 中介分水岭 机构大数据风生水起
- c 盘空间又满了?微信清理神器帮你释放空间
- 高通SDM450韦根数据输入过快导致数据丢失问题分析处理
- DARPA世界建模者(World Modelers)项目介绍
- css奇数偶数选择器_css高级选择器和基本选择器
- 开源html5小游戏6,html5简易小游戏 - strip_liu的个人空间 - OSCHINA - 中文开源技术交流社区...
- mysql-pius代码生成网站_MyBatis-Plus代码生成工具
- 1卢布等于多少人民币(2014年04月23日)
- Nginx 内存池似懂非懂?一文带你看清高性能服务器内存池
- 实战 - 谷粒商城项目:高级上篇First