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为设置进程数

浙公网安备 33010602011771号