- 先去下载源码包mpich3.2.tar.gz(网址:http://www.mpich.org/static/downloads/3.2/)
- 然后将文件上传到你要安装的目录下,笔者的目录是:
/usr/software/mpi
- 解压文件到当前文件夹:
tar -zxvf mpich-3.2.tar.gz
- 新建一个文件夹作为安装目录:
mkdir mpich
-
进入解压的文件夹:
cd mpich-3.2 ./configure -prefix=/usr/software/mpi/mpich
此时出现了报错:
configure: error: No Fortran 77 compiler found. If you don't need to build any Fortran programs, you can disable Fortran support using --disable-fortran. If you do want to build Fortran programs, you need to install a Fortran compiler such as gfortran or ifort before you can proceed.
根据提示在命令后加上
--disable-fortran
./configure -prefix=/usr/software/mpi/mpich --disable-fortran
-
成功之后运行
make
命令,接着```make install`` -
安装完成后,添加环境变量
sudo vim ~/.bashrc
在最下面加上:
export MPI_ROOT=/usr/software/mpi/mpich export PATH=$MPI_ROOT/bin:$PATH export MANPATH=$MPI_ROOT/man:$MANPATH
保存之后执行
source ~/.bashrc
使修改立即生效。
至此安装过程就结束了。下面来一个测试,新建一个mpi_hello.c文件,将下面的代码粘贴过去。
#include <stdio.h>
#include <string.h>
#include <mpi.h>
const int MAX_STRING=100;
int main(int argc, char const *argv[])
{
/* code */
char greeting[MAX_STRING];
int comm_sz;
int my_rank;
MPI_Init(NULL,NULL);
MPI_Comm_size(MPI_COMM_WORLD,&comm_sz);
MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
if (my_rank!=0)
{
/* code */
sprintf(greeting,"Greetings from process %d of %d!",my_rank,comm_sz);
MPI_Send(greeting,strlen(greeting)+1,MPI_CHAR,0,0,MPI_COMM_WORLD);
}else{
printf("Greetings from process %d of %d!\n",my_rank,comm_sz);
for (int i = 1; i < comm_sz; ++i)
{
/* code */
MPI_Recv(greeting,MAX_STRING,MPI_CHAR,i,0,MPI_COMM_WORLD,MPI_STATUS_IGNORE);
printf("%s\n", greeting);
}
}
MPI_Finalize();
return 0;
}
打开terminal,进行编译:
mpicc -g -Wall -o mpi_hello mpi_hello.c
其中:
mpicc 编译C程序
-g 允许使用调试器
-Wall 显示警告(W大写)
-o outfile.o 编译出可执行的文件,文件名为outfile.o
-02 告诉编译器对代码进行优化
编译完成后,可以看到:
root@pdf:/usr/software/mpi/code# ls -la
total 24
drwxr-xr-x 2 root root 4096 Nov 7 14:01 .
drwxr-xr-x 5 root root 4096 Nov 7 13:52 ..
-rwxr-xr-x 1 root root 10824 Nov 7 14:00 mpi_hello
-rw-r--r-- 1 root root 785 Nov 7 14:00 mpi_hello.c
开始运行,可由-n后面的数字来调节创建进程数。
mpirun -n 4 ./mpi_hello
运行结果为:
root@pdf:/usr/software/mpi/code# mpirun -n 4 ./mpi_hello
Greetings from process 0 of 4!
Greetings from process 1 of 4!
Greetings from process 2 of 4!
Greetings from process 3 of 4!
至此,MPI的安装和测试全部完成。