Centos7 安装MPI并运行c程序
前言
本文安装MPI部分是根据此博客安装MPI,但是里面会有一点点小错误,所以我重新整理一下。
安装MPI
注意:以下都在root用户下执行,如果权限不够记得每个指令前面添加sudo。
- 更新yum库
yum update
- 下载依赖包
yum install wget -y
yum install gcc gcc-c++ gcc-gfortran kernel-devel -y
- 创建一个目录存放下载包
cd /
mkdir software
cd /software
wget http://www.mpich.org/static/downloads/3.4.1/mpich-3.4.1.tar.gz
- 解压
tar -zxvf mpich-3.4.1.tar.gz
- 创建一个存放mpich安装包的目录(前面那个是存放下载包)
cd /
mkdir mpich-install
- 进入之前的那个下载包目录,编译安装
cd /software/mpich-3.4.1
./configure --prefix=/mpich-install --with-device=ch4:ofi 2>&1 | tee c.txt
make
make install
里面那个prefix后面的目录就是安装包要存放的路径
- 编译环境变量
vim ~/.bashrc
移动到最底层,点击字母“i”,即可插入添加语句:
export MPICH=/mpich-install
export PATH=$MPICH/bin:$PATH
然后先点击“esc”,在输入“:wq”,然后"enter"即可修改完成并退出vim
令环境变量生效:
source ~/.bashrc
- 检测是否安装完成
mpirun -version
如果显示如下:
则安装成功。
编译一个程序试试
要求:MIP “Hello world”程序(每个进程输出自己的编号、进程的总数、以及节点的名字)的编译,运行,以及结果
- 编写helloworld.c
并行课上老师给了代码作为测试,如下:
#include <stdio.h>
#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; //该冒号也是中文,改过来
}
- 编译,运行
编译:
mpicc -o hello helloworld.c
运行hello:
mpirun -n 2 ./hello
此时2表示使用2个进程