mpi学习(1)

 

介绍

mpi全称message-passing interface 是一个可以被C, C++, FROTRAN调用的函数库,用于分布式内存进程之间的通信。

目前常用的有openmpi, mpich, 以及intel 的函数库。

下面记录了我学习mpi的经历和过程,使用的参考资料为《并行程序设计导论》

所有MPI定义的标识符都有MPI_字符串开始,下划线后第一个字符大写,表示函数和MPI定义的类型。MPI定义的宏和常量所有字母均大写。

 

int MPI_Init(int *argc_p, char *** argv_p)

初始函数,一般用在调用mpi其他函数之前。为了初始化MPI一些参数

目前我一般两个参数全置为NULL;

int MPI_Finalize()

终止函数,释放资源。之后就不应该在调用MPI函数。

通信子

通信子是指一组可以相互发送消息的进程集合。其中MPI_COMM_WORLD是用户启动的所有的通信子。

int MPI_Comm_size(MPI_Comm comm, int * comm_sz_p)

第一个参数是通信子,第二个为调用的通信子中的进程数。

int MPI_Comm_rank(MPI_Comm comm, int * my_rank_p)

第一个参数是通信子,第二个为调用的通信子中的进程号。

example

 

#include <stdio.h>
#include "mpi.h"

int main()
{
    int size;
    int myrank;
    MPI_Init(NULL,NULL);
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
    
    printf("I AM %d of %d", myrank, size);
    MPI_Finalize();
}
//下一次要复习下基本概念了。。。
//mpicc –o xx xxx.c #编译
//mpirun –np n 你的执行文件路径 #执行,其中n为设置进程数 
posted @ 2015-07-21 11:46  SALTYX  阅读(562)  评论(0)    收藏  举报