最近为了验证MPI并行计算的性能问题,在Vmware虚拟机上安装了Ubuntu16.04,又在Ubuntu16.04上安装并测试了MPI3.2,详细介绍了MPI3.2源码在Ubuntu 16.04下的安装过程,避免后面的同学少踩坑。
一. MPI压缩包的下载与解压
1.在网站上下载MPI3.2源码
[链接]http://www.mpich.org/static/downloads/3.2/mpich-3.2.tar.gz
2.终端进行解压缩
一般默认的下载目录为:/home/用户名/下载/
先进入该目录下,然后使用如下命令解压缩
cd /home/用户名/下载
sudo tar -zxvf mpich-3.2.tar.gz
二. MPI文件的配置
1.为了方便操作,可以先在home根目录下新建一个mpich文件夹,然后将上述解压后的mpich-3.2文件拷贝至mpich文件夹。
$ cd /home
$ mkdir mpich
$ cp /home/用户名/下载/mpich-3.2 /home/mpich
2.进入mpich-3.2,通过ls命令进行查看内容。
$ cd /home/mpich/mpich-3.2
$ ls
3.配置configure文件。
$ ./configure --prefix=~/mpich-3.2 --disable-fortran
此时会报一个配置错误:
$ configure:error: expected an absolute directory name for --prefix: ~/mpich-3.2
意思需要一个mpich-3.2的绝对路径,一般情况下我们配置的fortran文件不用在mpich的安装目录下,因此可以选择放在新建的mpich目录下。比如我放在/home/用户名/mpich下会报错,而放在/home/mpich下就可正常配置。
三. MPI的编译和安装,配置环境变量
1.先回到MPI的解压目录下,进行编译操作。
$ cd /home/mpich/mpich-3.2
$ make
2.等待完成后进行安装操作,一般需要赋予权限。
$ sudo make install
输入密码后即可自动安装,静待安装完成。
3.打开.bashrc配置文件
$ gedit ~/.bashrc
在bashrc文档开头或末尾添加mpich执行的路径,注意:PATH后面是文件夹位置 注意等号中间别留空格。
export MPI_ROOT=/home/mpich
export PATH=$MPI_ROOT/bin:$PATH
export MANPATH=$MPI_ROOT/man:$MANPATH
然后保存
$ source ~/.bashrc
至此,安装过程顺利结束。
四. MPI运行测试
1.在mpich文件夹新建一个mpi_hello.cpp文件,将下面的代码粘贴过去。
#include <iostream>
#include <string.h>
#include <mpi.h>
using namespace std;
const int max_string = 100;
int main ()
{
int comm_sz=0;
int my_rank=0;
char greeting[max_string];
MPI_Init(NULL,NULL);
MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
MPI_Comm_size(MPI_COMM_WORLD,&comm_sz);
if(my_rank==0){
sprintf(greeting,"Greetings from process %d of %d!",my_rank,comm_sz);
MPI_Send(greeting,strlen(greeting),MPI_CHAR,0,0,MPI_COMM_WORLD);
}
else{
cout<<"Greetings from process "<<my_rank<<" of "<<comm_sz<<"!"<<endl;
for(int i=1;i<comm_sz;i++){
MPI_Recv(greeting,max_string,MPI_CHAR,i,0,MPI_COMM_WORLD,MPI_STATUS_IGNORE);
cout<<greeting<<endl;
}
}
MPI_Finalize ();
return 0;
}
2.回到终端,在mpich的目录下进行编译。
$ mpicxx -g -Wall -o mpi_hello.o mpi_hello.cpp
3.编译完成后会在该目录下生成一个mpi_hello.o的文件,再运行这个文件,其中-n后面的数字是调节创建的进程数量。
$ mpirun -n 4 ./mpi_hello.o
4.我设置的4个进程,最后出现下图结果。
至此,完成MPI的安装和测试过程。接下来会利用MPI做些并行计算的测试。
参考文献:https://blog.csdn.net/qq_30239975/article/details/77703321
来源:oschina
链接:https://my.oschina.net/u/4295464/blog/4817275