exittest.c

来自「MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程」· C语言 代码 · 共 79 行

C
79
字号
/*  A report was made that this program hung on a 2 processor LINUX cluster.  We haven't seen that problem, but since this does test whether process 0  waits for the other processes to complete before exiting, it is a good  test to have. */#include <stdio.h>#include "mpi.h"#define MAX_NUM_PROCS 10int main( int argc, char *argv[]){  int idx;  int num_procs,my_id;  int s;  int r;  MPI_Status status;  MPI_Init(&argc,&argv);  MPI_Comm_size(MPI_COMM_WORLD,&num_procs);  MPI_Comm_rank(MPI_COMM_WORLD,&my_id);    if (num_procs < 3)    {    fprintf(stderr, "Need at least 3 processes for this bug\n");    MPI_Finalize();    return 0;    }#ifdef DEBUG    fprintf(stderr, "%d Starting ....\n", my_id);  fflush(stderr);#endif    if (my_id == 1)    {    idx = 2;    s = 333;#ifdef DEBUG    fprintf(stdout, "%d start send (%d) to %d\n", my_id, s, idx);    fflush(stdout);#endif    MPI_Send(&s, 1, MPI_INT, idx, 0, MPI_COMM_WORLD);#ifdef DEBUG    fprintf(stdout, "%d finished send to %d\n", my_id, idx);    fflush(stdout);#endif    }    if (my_id == 2)    {    idx = 1;#ifdef DEBUG    fprintf(stdout, "%d start recv from %d\n", my_id, idx);    fflush(stdout);#endif    MPI_Recv (&r, 1, MPI_INT, idx, 0, MPI_COMM_WORLD, &status );#ifdef DEBUG    fprintf(stdout, "%d finished recv (%d) from %d\n", my_id, r, idx);    fflush(stdout);#endif    }#ifdef DBUG    fprintf(stdout, "%d Done ....\n",my_id);  fflush(stdout);#endif    MPI_Barrier( MPI_COMM_WORLD );  if (my_id == 0) {      /* If we reach here, we're done */      printf( " No Errors\n" );  }  MPI_Finalize();  return 0;}

⌨️ 快捷键说明

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