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

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系统源码编译安装调用

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
CentOS安装MPICH需要进行以下步骤: 1. 首先,安装编译器。可以使用yum命令进行安装: ``` sudo yum install make sudo yum install gcc sudo yum install gcc-c ``` 2. 下载MPICH安装包并解压。可以从官网上下载指定版本的安装包,例如mpich-3.2.1。使用wget命令下载: ``` wget http://www.mpich.org/static/downloads/3.2.1/mpich-3.2.1.tar.gz ``` 3. 在准备安装MPICH之前,需要创建一个安装目录。可以选择在当前目录下创建,也可以选择创建一个新的目录。在这里,我们以在/home/[USERNAME]/mpich-install目录下安装为例。使用以下命令创建目录: ``` cd /home/[USERNAME] mkdir mpich-install ``` 4. 接下来,进入解压后的MPICH安装包目录,并执行以下命令进行配置和安装: ``` cd mpich-3.2.1 ./configure --prefix=/home/[USERNAME]/mpich-install make sudo make install ``` 5. 安装完成后,可以根据MPICH的官方文档进行配置和使用。可以查阅官方文档和入门安装文档获取更多信息。 请注意,上述步骤中的[USERNAME]需要替换为你的用户名。另外,确保你有足够的权限进行安装和配置。 希望以上信息对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CentOS 7下安装MPICH3.2过程详解](https://blog.csdn.net/qq_33892998/article/details/78687529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【无标题】CentOS安装Mpich](https://blog.csdn.net/sinat_22510827/article/details/123813861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xyq_龙呆呆

投桃报李

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值