您的位置:首页 > 运维架构

MPI初学-安装及OpenMPI函数说明

2016-08-14 19:39 316 查看

一、Mac下OpenMPI的安装

所用电脑:MacBook Pro,OSX 10.11.2

从openmpi官网下载相应版本:OpenMPI 1.8下载

解压文件

双击解压或者tar zxvf openmpi***.tar.gz

指定安装路径

进入解压的目录,指定要安装的路径:./condigure --prefix=/usr/local

编译mpi源码

make all

sudo make安装

sudo make install

检查是否加入环境变量

echo $PATH 查看MPI所在的/usr/local/bin是否在环境变量PATH中

编译examples源码并运行

首先进入examples文件夹,该文件夹下有一些MPI的简单源码例子

编译hello world的C程序,mpicc hello_c.c -o test

或者编译hello world的C++程序,mpicxx hello_cxx.cc -o test

这样生成名叫test的可执行程序,然后使用mpirun执行:mpirun -np 2 ./test //np指定使用几个进程

二、MPI函数简单说明

下面以examples里的hello_c.c为例说明MPI常用函数

int myid, numprocess;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &numprocess);
MPI_Get_processor_name(processor_name, &namelen);

fprintf(stderr, "To you : Process %d of %d on %s\n", myid, numprocess, processor_name);
MPI_Finalize();
return 0;


初始化 MPI_Init(int argc, char **argv)

参数:argc变量个数,argv变量数组

获取当前进程标识 MPI_Comm_rank(MPI_Comm comm, int rank)

参数:comm该进程所在的通信域句柄,rank该进程在通信域中的标识号

获取通信域进程总数 MPI_Comm_size(MPI_Comm comm,int size)

参数:comm该进程所在的通信域句柄,size通信域comm中的进程总数

获取本线程机器名 MPI_Get_processor_name(char *name,int resultlen)

参数:name为返回的机器名字符,resultlen为机器名长度

结束函数 MPI_Finalize()

另外,MPI有预定义的数据类型与C语言中的对应关系如下:

MPI数据类型 对应C数据类型

MPI_CHAR signed char

MPI_SHORT signed short int

MPI_INT signed int

MPI_LONG signed long int

MPI_UNSIGNED_CHAR unsigned char

MPI_UNSIGNED_SHORT unsigned short int

MPI_UNSIGNED unsigned int

MPI_UNSIGNED_LONG unsigned long int

MPI_FLOAT float

MPI_DOUBLE double

MPI_LONG_DOUBLE long double

MPI_BYTE 无相应数据类型

MPI_PACKED 无相应数据类型

MPI_LONG_LONG_INT long long int
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: