MPI编程--求最大值

来源:互联网 发布:网络推广新闻发布 编辑:程序博客网 时间:2024/06/10 06:20
#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;}
原创粉丝点击