采用 MPI_Send 和 MPI_Recv 编写代码来实现 MPI_Allgather 的功能

本文详细介绍了如何利用MPI_Send和MPI_Recv基本通信函数,实现MPI_Allgather的功能。通过实例代码解析,展示了在并行计算环境中收集所有进程数据到每个进程的过程。
摘要由CSDN通过智能技术生成

MPI_Allgather实现

#include "stdio.h"
#include "mpi.h"
int main( int argc, char* argv[] )
{
    int i;
    int rank, nproc;
    int isend, irecv[32];
    double start_time, end_time, time, cputime;  
	       
    MPI_Init( &argc, &argv );
    start_time = MPI_Wtime();
	MPI_Comm_size( MPI_COMM_WORLD, &nproc );
    MPI_Comm_rank( MPI_COMM_WORLD, &rank );

    isend = rank + 1;
    MPI_Allgather(&isend, 1, MPI_INT, irecv, 1, MPI_INT,
                              MPI_COMM_WORLD);
    for(i=0; i<nproc; i++)
         printf("My rank =  %d  irecv = %d\n", rank, irecv[i]);
    
    end_time = MPI_Wtime();
    cputime = end_time - start_time;
    MPI_Reduce(&cputime,&time,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);
    if(rank == 0)
    printf("time is %f s.\n",time/nproc);
    
	MPI_Finalize();    
}

采用 MPI_Send 和 MPI_Rec
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值