MPI(Message Passing Interface),由其字面意思也可些许看出,是一个信息传递接口。可以理解为是一种独立于语言的信息传递标准。而OpenMPI和MPICH等是对这种标准的具体实现。也就是说,OpenMPI和MPICH这类库是具体用代码实现浏MPI标准。因此我们需要安装OpenMPI或者MPICH去实现我们所学的MPI的信息传递标准。
常用的MPI并行环境有:MPICH、LAM-MPI、openmpi、Intel的MPI等。
如果CPU是Intel的产品,提议使用Intel的MPI。
本文案例使用MPICH,版本是4.1.2。
1、需要编译工具gcc gcc-c++ perl gcc-gfortran 等等。检查是否已经安装了编译工具。
which gcc
which gfortran
yum install gcc gcc-c++ gcc-gfortran perl wget
yum -y install zlib* bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-deve
2、安装升级python3。
MPICH4.1.2编译需要安装python3,Centos7.6自带的python2.7不满足,需要升级安装一下Python3。(如果安装其他低版本的MPICH可能不需要升级系统的Python版本)
#wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
#tar -zxvf Python-3.6.5.tgz
#cd Python-3.6.5
#./configure --with-ssl --prefix=/opt/python3.6
#make && make install
[root@hpc mpich-4.1.2]# python -V (当前默认版本)
Python 2.7.5
[root@hpc mpich-4.1.2]# mv /usr/bin/python /usr/bin/python.bak
[root@hpc mpich-4.1.2]# ln -s /opt/python3.6/bin/python3.6 /usr/bin/python (创建软连接)
[root@hpc mpich-4.1.2]# ln -s /opt/python3.6/bin/pip3 /usr/bin/pip (创建软连接)
[root@hpc mpich-4.1.2]# python -V
Python 3.6.5
[root@hpc examples]# pip -V
pip 9.0.3 from /opt/python3.6/lib/python3.6/site-packages (python 3.6)
[root@hpc examples]#
有Yum程序依赖原来的python2,所有要设置一下yum配置。
#vi /usr/bin/yum
把第一行 #! /usr/bin/python 修改为:#! /usr/bin/python2
#vi /usr/libexec/urlgrabber-ext-down
把第一行 #! /usr/bin/python 修改为:#! /usr/bin/python2
3、安装编译mpich4.1.2软件包
#wget http://www.mpich.org/static/downloads/4.1.2/mpich-4.1.2.tar.gz
#tar -zxvf mpich-4.1.2.tar.gz #解压下载的压缩包
#cd mpich-4.1.2 #进入解压后的文件夹内
#./configure --prefix=/usr/local/mpich-4.1.2 # --prefix这一参数是设置安装的路径,根据需要设置合适的路径即可
#make
#make install
设置环境变量
#vi ~/.bashrc 或者.bash_profile 增加环境变量
#export PATH="/usr/local/mpich-4.1.2/bin:$PATH"
export MPI_HOME=/usr/local/mpich-4.1.2/
export PATH=$MPI_HOME/bin:$PATH
export PATH=$PATH:$MPI_HOME/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPI_HOME/lib
export MANPATN=$MANPATH:$MPI_HOME/man
#source ~/.bashrc
#which mpicc
#which mpif90
5、测试环境变量正常后,测试一下MP程序I运行。步骤如下:
[root@hpc examples]# pwd (源代码目录的案例下)
/root/mpich-4.1.2/examples
[root@hpc examples]# mpicc -o hellow hellow.c (编译一个测试用例)
[root@hpc examples]# mpirun -np 4 ./hellow (执行测试正常)
Hello world from process 2 of 4
Hello world from process 1 of 4
Hello world from process 0 of 4
Hello world from process 3 of 4
[root@hpc examples]#