Centos7 MPI安装
我使用的服务器的版本为
➜ / uname -a
Linux juechen 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
➜ / cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
查看可用的版本
yum list > list.text
由于不确定mpi的名字,我们将所有的可安装的包输出进行搜索。
可以发现还是有很多可用的包
安装
然后我们选择安装3.2版本的,由于服务器是64位的,所以选择使用64位
yum install mpich-3.2.x86_64
yum install mpich-3.2-autoload.x86_64
yum install mpich-3.2-devel.x86_64
yum install mpich-3.2-doc.noarch
安装完成之后我们去找一下安装的目录
➜ / cd /usr/lib64/mpich-3.2
➜ mpich-3.2 ls
bin lib
进入bin
目录
➜ mpich-3.2 cd bin
➜ bin ls
hydra_nameserver hydra_pmi_proxy mpicc mpicxx mpiexec.gforker mpif77 mpifort mpivars
hydra_persist mpic++ mpichversion mpiexec mpiexec.hydra mpif90 mpirun parkill
可以看到很多的文件和编译器。
添加路径
MPI_ROOT=/usr/lib64/mpich-3.2
export PATH=$MPI_ROOT/bin:$PATH
设置目录
然后使之生效
source .bashrc
测试
#include <mpi.h>
#include <stdio.h>
#include <math.h>
int main(int argc,char* argv[])
{
int myid, numprocs;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);/* 初始化并行环境 */
MPI_Comm_rank(MPI_COMM_WORLD,&myid);/* 当前进程的ID号 */
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);/* 进程的总數 */
MPI_Get_processor_name(processor_name,&namelen);/* 当前处理器的名称 */
fprintf(stderr,"Hello World! Process %d of %d on %s\n",myid, numprocs, processor_name);
MPI_Finalize();/* 结束并行环境 */
return 0;
}
然后编译
mpic++ hello.cpp -o hello
之后进行运行
➜ ~ ./hello
Hello World! Process 0 of 1 on juechen
然后传入参数
➜ ~ mpirun -np 4 ./hello
Hello World! Process 2 of 4 on juechen
Hello World! Process 3 of 4 on juechen
Hello World! Process 1 of 4 on juechen
Hello World! Process 0 of 4 on juechen