Ubuntu16.04下MPI3.2安装

  1. 先去下载源码包mpich3.2.tar.gz(网址:http://www.mpich.org/static/downloads/3.2/)
  2. 然后将文件上传到你要安装的目录下,笔者的目录是:
    /usr/software/mpi
    
  3. 解压文件到当前文件夹:
    tar -zxvf mpich-3.2.tar.gz
    
  4. 新建一个文件夹作为安装目录:
mkdir mpich
  1. 进入解压的文件夹:

    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
    
  2. 成功之后运行make命令,接着```make install``

  3. 安装完成后,添加环境变量

    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的安装和测试全部完成。

猜你喜欢

转载自blog.csdn.net/pdfcxc/article/details/83823178