MPI(Message Passing Interface),由其字面意思也可些许看出,是一个信息传递接口。可以理解为是一种独立于语言的信息传递标准。而OpenMPI和MPICH等是对这种标准的具体实现。也就是说,OpenMPI和MPICH这类库是具体用代码实现浏MPI标准。因此我们需要安装OpenMPI或者MPICH去实现我们所学的MPI的信息传递标准。
MPICH和OpenMPI等是采用MPI标准的通信协议。本文将选择MPICH的安装作为示范,一步一步讲解如何配置MPI的环境。 OpenMPI的按照方法也同理。
一、MPI的下载与安装
在开始安装之前,先检查一下是否已经安装好了相应的编译器。
1
2
which gcc
which gfortran
如显示没有找到,则需要分别进行安装。
红帽系(Red Hat、CentOS、Fedora、openSUSE等):
1
2
3
yum install glibc-headers
yum install gcc-c++
yum install gcc-gfortran
Debian系(Debian、Ubuntu、Mint等):
1
2
3
apt-get install build-essential
apt-get install g++
apt install gfortran
当检查完编译器之后,去https://www.mpich.org/downloads/ 选择合适的版本下载,对于没有图形界面的服务器,也可使用wget命令下载。 tar命令是解压文件的命令。MPI库通常采用的是源码安装,因此,需要使用cd命令进入到解压后的文件夹中,使用./configure进行安装前的设置与检查,由于我们只需要更改一下安装的路径,因此在–prefix这一参数中,设置你想要安装的路径即可。执行这一行之后,就会开始检查编译环境是否满足,此时报错多半是因为编译器安装的问题或者编译器版本不匹配的问题,一般通过安装最新的编译器能解决。这一步成功完成之后,即可使用make命令去执行编译。该路径下makefile文件已经写好了这些源代码的编译规则,因此输入make即可开始按照makefile的规则对源码进行编译。如果你做的工作和底层语言如Fortran、C或C++之类的,还是有必要学习一下makefile的写法,有助于之后的多文件编译工作。顺便一提,使用Linux学习底层语言是更有好处的,因为Windows初学编程语言通常是使用集成开发环境,在对代码进行编译时通常是一键操作,导致中间的几个过程会被下意识的忽略掉,这将导致一开始适应不了Linux环境下编译文件的命令。当make完成之后,就可以使用make install命令进行安装了。
1
2
3
4
5
6
7
wget http://www.mpich.org/static/downloads/3.3.2/mpich-3.3.2.tar.gz
tar -zxvf mpich-3.3.2.tar.gz #解压下载的压缩包
cd mpich-3.3.2 #进入解压后的文件夹内
./configure --prefix=/usr/local/mpich-3.3.2
# --prefix这一参数是设置安装的路径,根据需要设置合适的路径即可,但需要记住安装的位置
make -j
sudo make install
上面使用的是Linux系统自带默认的gcc和gfortran编译。如果使用intel的icx和ifort(新版为ifx)编译器,需要在./configure之前强制设置。
1
2
3
4
5
export CC=icc
export CXX=icpc
export F77=ifort
export F90=ifort
export FC=ifort
如编译提示编译器冲突,可以进行卸载,如:
1
unset F90=ifort
如果使用的是intel的新版ifx编译器,设置会不一样。
1
2
3
4
5
6
export CC=icx
export CXX=icpx
export F77=ifx
export F90=ifx
export FC=ifx
./configure --prefix=/usr/local/mpich-4.2.3
使用新版还可能遇到问题,mpi目前的版本里面只有ifort,而2025年版本的intel编译器删除了ifort,只有ifx,造成libtool在install时报错:
1
2
/mnt/e/mpich-3.3.2/libtool: line 10550: ifx: command not found
libtool: error: error: relink 'lib/libmpifort.la' with the above command before installing it
修改方法是,打开libbook文件,将里面的文本路径ifx改为绝对路径,如/opt/intel/oneapi/compiler/2025.0/bin/ifx。
二、环境变量的配置
安装完成后,可以去之前–prefix设置的路径去看一下安装结果。安装好了之后,还需要告诉系统mpi库的路径地址,这样当你调用mpi的命令时,系统才知道你在干什么。在用户的根目录下,有一个.bashrc的文本文件。这个文件可以理解为,每次打开终端时都会加载的启动项。~即为家目录,也就是用户的根目录。
1
vim ~/.bashrc
通过vim打开当前用户下所对应的.bashrc文件,在其中加入(建议添加在最下面)
1
2
export PATH="/usr/local/mpich-3.3.2/bin:$PATH"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpich-3.3.2/lib
保存退出之后 ,使用source这一命令执行一下就把新加的命令执行了。
1
source ~/.bashrc
用which来检验下配置的环境变量是否正确。如果显示了其路径,则说明安装顺利完成了。
1
2
3
which mpicc
which mpiexec
which mpif90
提示:mpicc、mpif90是编译命令;mpiexec是执行命令。
进入到最开始解压的文件夹中,到解压的文件夹内的examples文件夹中,测试一下hello是否能顺利运行。首先编译然后运行:
1
2
mpicc -o hellow hellow.c
mpirun -np 4 ./hellow
若可运行说明顺利完成安装。
1
2
3
4
Hello world from process 1 of 4
Hello world from process 3 of 4
Hello world from process 0 of 4
Hello world from process 2 of 4
参考资料
1.都志辉. 高性能计算并行编程技术:MPI并行程序设计[M]. 清华大学出版社, 2001.