首页 > 编程知识 正文

MPI MPIBcast 广播用法详解,条件函数if的用法详解

时间:2023-05-04 20:38:01 阅读:219903 作者:2897

函数范式 int MPI_Bcast(void * data_p;int count;MPI_Datatype datatype;int source_proc;MPI_Comm comm;); 功能描述:

一个广播发生的时候,一个进程会把同样一份数据传递给一个 communicator 里的所有其他进程。根节点调用 MPI_Bcast 函数的时候,data 变量里的值会被发送到其他的节点上。当其他的节点调用 MPI_Bcast 的时候,data 变量会被赋值成从根节点接受到的数据。
实现使用了一个树形广播算法来获得比较好的网络利用率。

示例 #include <stdio.h>#include <mpi.h>#pragma comment(lib,"mpi.lib")int main(int argc,char *argv[]){ int rank,nproc; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&rank); MPI_Comm_size(MPI_COMM_WORLD,&nproc); int data = 0; int tag = 100; MPI_Status status; //主进程时把data赋值为99 if(rank == 0){ data = 99;}//这里就可以把data的值发出去,如果没有这个函数的话0号进程中的data就会和其他进程中的data不一样。 //MPI_Bcast(&data,1,MPI_INT,0,MPI_COMM_WORLD); for (int i=0; i<nproc; i++){ printf("data = %d in %d process.n",data,rank); } MPI_Finalize(); return 0;}

运行结果:

#include <stdio.h>#include <mpi.h>#pragma comment(lib,"mpi.lib")int main(int argc,char *argv[]){ int rank,nproc; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&rank); MPI_Comm_size(MPI_COMM_WORLD,&nproc); int data = 0; int tag = 100; MPI_Status status; //主进程时把data赋值为99 if(rank == 0){ data = 99;}//这里就可以把data的值发出去,如果没有这个函数的话0号进程中的data就会和其他进程中的data不一样。 MPI_Bcast(&data,1,MPI_INT,0,MPI_COMM_WORLD); for (int i=0; i<nproc; i++){ printf("data = %d in %d process.n",data,rank); } MPI_Finalize(); return 0;}

运行结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。