MPI编程--求最大值

#include <stdio.h>
#include <mpi.h>
#include <malloc.h>
int main (int argc ,char** argv)
{
        int rank,size,i,max,MAX;
        int a;        
        MPI_Init(&argc, &argv);        
        MPI_Comm_size(MPI_COMM_WORLD,&size);        
        MPI_Comm_rank(MPI_COMM_WORLD, &rank);        
        a = 1000/size;        
        int rbuf1[a];        
        int *sbuf = (int *) malloc(sizeof(int) * a * size);        
        int *rbuf2 = (int*)malloc(sizeof(int)  * size);        
        if (rank == 0){        
        for(i=1;i<=a*size;i++){        
        sbuf[i-1] = i;        
        }}       
        MPI_Scatter(sbuf, a, MPI_INT, rbuf1, a, MPI_INT, 0, MPI_COMM_WORLD);        
        max = rbuf1[0];        
        for(i=1;i<a;i++)        
        if(rbuf1[i] > max)  
        max = rbuf1[i];        
        printf("Process %d 's max = %d\n",rank,max);        
        MPI_Gather(&max, 1, MPI_INT, rbuf2, 1, MPI_INT, 0, MPI_COMM_WORLD);        
        if(rank == 0){        
        MAX = rbuf2[0];        
        for(i=1;i<size;i++){        
        if(rbuf2[i]>MAX) 
        MAX = rbuf2[i];        
        }        
        printf("The Maximum = %d\n",MAX);        
        }        
        MPI_Finalize();        
        return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值