[MPI] MPI 编程指南-- 6个基本函数组成的MPI子集

学习资料  中国科技大学 《MPI编程指南》PPT

学习笔记

-> MPI初始化: 通过 MPI_Init  函数进入MPI环境并完成所有的初始化工作。

         int MPI_Init(int *argc, char *** argv)

->MPI结束: 通过 MPI_Finalize 函数从 MPI 环境中退出。

         int MPI_Finalize(void)

->获取进程编号: 调用 MPI_Comm_rank 函数获得当前进程在指定通信域中的编号,将自身与其他程序区分。

         int MPI_Comm_rank(MPI_Comm comm, int *rank)

-> 获取指定通信域的进程数: 调用 MPI_Comm_size 函数获取指定通信域的进程个数,确定自身完成任务比例。

         int MPI_Comm_size( MPI_Comm comm, int *size)

->消息发送: MPI_Send 函数用于发送一个消息到目标进程。

         int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)

->消息接受: MPI_Recv 函数用于从指定进程接收一个消息。

         int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status)

        

例子:

     #include "mpi.h" /*MPI 头函数,提供了MPI函数和数据类型定义*/

      int main(int argc, char ** argv)

       {

               int rank,size,tag=1;

               int senddata, recvdata;

               MPI_Status status;

               MPI_Init(&argc, &argv);  /*MPI 初始函数*/

               MPI_Comm_rank(MPI_COMM_WORLD, &rank); /*该进程编号*/

               MPI_Comm_size(MPI_COMM_WORLD, &size); /*总进程数目*/

                if(rank==0){

                     senddata=9999;

                     MPI_Send(&senddata,1,MPI_INT, 1, tag, MPI_COMM_WORLD); /*发送数据到进程1*/

                 }

                 

                 if ( rank==1){

                        MPI_Recv(&recvdata,1,MPI_INT,0,tag, MPI_COMM_WORLD, &status); /*从进程0接收数据*/

                  }

                   MPI_Finalize(); /*MPI结束函数*/

                    return 0;

      }

 

学习感想

        6个基本函数,考虑到的是 开始、结束、进程号、进程数、发送、接收。

        程序的结构:初始化,获取进程号,进程数,发送/接收操作,结束。

posted on 2012-09-15 22:29  applesun0757  阅读(1361)  评论(0)    收藏  举报