Centos7 安装MPI并运行c程序


前言

本文安装MPI部分是根据此博客安装MPI,但是里面会有一点点小错误,所以我重新整理一下。

安装MPI

注意:以下都在root用户下执行,如果权限不够记得每个指令前面添加sudo。

  1. 更新yum库
yum update
  1. 下载依赖包
yum install wget -y
yum install gcc gcc-c++ gcc-gfortran kernel-devel -y
  1. 创建一个目录存放下载包
cd /
mkdir software
cd /software
wget http://www.mpich.org/static/downloads/3.4.1/mpich-3.4.1.tar.gz
  1. 解压
tar -zxvf mpich-3.4.1.tar.gz
  1. 创建一个存放mpich安装包的目录(前面那个是存放下载包)
cd /
mkdir mpich-install
  1. 进入之前的那个下载包目录,编译安装
cd /software/mpich-3.4.1
./configure --prefix=/mpich-install --with-device=ch4:ofi 2>&1 | tee c.txt

make   
make install

里面那个prefix后面的目录就是安装包要存放的路径

  1. 编译环境变量
vim ~/.bashrc

移动到最底层,点击字母“i”,即可插入添加语句:

export MPICH=/mpich-install
export PATH=$MPICH/bin:$PATH

然后先点击“esc”,在输入“:wq”,然后"enter"即可修改完成并退出vim
令环境变量生效:

source ~/.bashrc
  1. 检测是否安装完成
mpirun -version

如果显示如下:

则安装成功。

编译一个程序试试

要求:MIP “Hello world”程序(每个进程输出自己的编号、进程的总数、以及节点的名字)的编译,运行,以及结果

  1. 编写helloworld.c
    并行课上老师给了代码作为测试,如下:
#include 
#include "mpi.h" //老师代码那里这个双引号是中文,记得改过来
int main(int argc, char *argv[]) 
{
    int myrank, size;
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    int namelen;
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    MPI_Get_processor_name(processor_name, &namelen);
    printf("Processor %d of %d on %s: Hello World!\n", myrank, size, processor_name);
    MPI_Finalize();
    return 0; //该冒号也是中文,改过来

}
  1. 编译,运行
    编译:
mpicc -o hello helloworld.c

运行hello:

mpirun -n 2 ./hello

此时2表示使用2个进程