4.4 广播(Broadcast) BACKWARDFORWARD


MPI_BCAST(buffer,count,datatype,root,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_BCAST(BUFFER,COUNT,DATATYPE,ROOT,COMM,IERROR)
  <type>   BUFFER(*)
  INTEGER COUNT,DATATYPE,ROOT,COMM,IERROR

MPI_BCAST是从一个序列号为root的进程将一条消息广播发送到组内的所有进程,包括它本身在内.调用时组内所有成员都使用同一个comm和root,其结果是将根的通信消息缓冲区中的消息拷贝到其他所有进程中去.

一般说来,datatype可以是派生的数据类型,其他进程中的count、datatype类型必须和根进程中的count、datatype保持一致,这隐含着在每一个进程和根进程之间,发送的数据个数必须和接收的数据个数相等.MPI_BCAST 和其他具有数据移动特征的集合操作例程都有此限制.但发送方和接收方之间的不同数据类型映射仍然是允许的.

4.4.1 MPI_BCAST的例子

例4.1:进程0向组内其他进程广播发送100个整型数.

MPI_Comm comm; 
int array[100]; 
int root=0;
......
MPI_Bcast(array , 100 , MPI_INT , root , comm);

在所有的例子代码框架中,我们假定其中的一些变量(如上面的comm)已经被赋予了一个相应的值.


Copyright: NPACT BACKWARDFORWARD