mpi1.cpp

来自「一个用c写的机遇MPI的并行程序」· C++ 代码 · 共 38 行

CPP
38
字号
#include "mpi.h"
#include <stdio.h>
void main( int argc, char **argv )

 {
      int  my_rank,p;
      int source,dest,tag,data;
	  MPI_Status status[MPI_STATUS_SIZE];
      MPI_Init(&argc, &argv);
      MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
      MPI_Comm_size(MPI_COMM_WORLD,&p);
      data=0;
      tag=5;
      source=my_rank-1;
      if(source==-1) source=p-1;
      dest=my_rank+1;
      if(dest==p) dest=0;
      if(my_rank==0) 
        {
         MPI_Send(&data,1,MPI_INT,dest,tag,MPI_COMM_WORLD);
         MPI_Recv(&data,1,MPI_INT,source,tag,MPI_COMM_WORLD,status);
         }
        else
         {
          MPI_Recv(&data,1,MPI_INT,source,tag,MPI_COMM_WORLD,status);
          MPI_Send(&data,1,MPI_INT,dest,tag,MPI_COMM_WORLD)   ;
         } 
      MPI_Bcast(&data,1,MPI_INTEGER,0,MPI_COMM_WORLD);

      if(my_rank==0) 
        { if(data==p-1) 
            printf("Successful, data=%d:", data);
         else
             printf("Failure, data=%d:", data);
         }
      MPI_Finalize();

 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?