122 ´®Ðв¿·Ö III |
/*@ MPE_Seq_end - Ends a sequential section of code. Input Parameters: . comm - Communicator to sequentialize. . ng - Number in group. @*/ void MPE_Seq_end( comm, ng ) MPI_Comm comm; int ng; { int lidx, np, flag; MPI_Status status; MPI_Comm local_comm; MPI_Comm_rank( comm, &lidx ); MPI_Comm_size( comm, &np ); MPI_Attr_get( comm, MPE_Seq_keyval, (void *)&local_comm, &flag ); if (!flag) MPI_Abort( comm, MPI_ERR_UNKNOWN ); /* Send to the first process in the next group OR to the first process in the processor set */ if ( (lidx % ng) == ng - 1 || lidx == np - 1) { MPI_Send( NULL, 0, MPI_INT, (lidx + 1) % np, 0, local_comm ); } if (lidx == 0) { MPI_Recv( NULL, 0, MPI_INT, np-1, 0, local_comm, &status ); } }
Copyright: NPACT |