[MPI] MPI 组通信程序设计 -- 广播
学习资料  《高性能计算之并行编程技术 -- MPI并行程序设计》
学习笔记
     
   >> 函数
        MPI_BCAST( buffer, count, datatype, comm)
    
    IN/OUT    buffer         通信缓冲区的起始地址(可选数据类型)
       
IN            count          将广播出去/或接收的数据个数(整型)
        IN            datatype    广播/接收数据的数据类型(句柄)
        IN            root            广播数据的根进程的标识号(整型)
        IN            comm         通信域(句柄)
        
        int MPI_Bcast (void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm)

                                       [MPI] MPI 组通信程序设计 -- 广播 - applesun - 计算机技术学习笔记
         
      
  MPI_BCAST 是一对多组通信的典型例子, 它完成从一个标识为 root 的进程将一条消息广播发送到组内的所有其它进程, 同时也包括它本身在内。

      
>>例子 (NOTE 2012-09-24: 此例子未完全读懂,未试验是否可行)
       
#include <stdio.h>
        #include "mpi.h"

         int main(int argc, char **argv){
                   int rank, value;
                   MPI_Init(&argc, &argv);
                   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
                  
                    do{
                             if(rank==0)   /*进程0读入需要广播的数据*/
                                     scanf("%d", &value);
                            
                              MPI_Bcast(&value, 1, MPI_INT, 0, MPI_COMM_WORLD); /*将该数据广播出去*/
                             
                               printf("Process %d got %d\n", rank, value); /*各进程打印收到的数据*/
                     }while(value>=0);

                     MPI_Finalize();
                      return 0;
          }
      

学习感想
posted on 2012-09-23 18:05  applesun0757  阅读(720)  评论(0)    收藏  举报