1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
 herr_t
 ss_scope_comm(ss_scope_t *scope,
               MPI_Comm *comm,           /* Optional returned communicator, not duplicated. */
               int *self,                /* Optional returned calling task's rank within communicator */
               int *ntasks               /* Optional returned size of communicator */
               )
 {
     SS_ENTER(ss_scope_comm, herr_t);
     SS_ASSERT_MEM(scope, ss_scope_t);

     if (comm) *comm = SS_SCOPE(scope)->m.comm;
     if (self && (*self=ss_mpi_comm_rank(SS_SCOPE(scope)->m.comm))<0) SS_ERROR(FAILED);
     if (ntasks && (*ntasks=ss_mpi_comm_size(SS_SCOPE(scope)->m.comm))<0) SS_ERROR(FAILED);

  SS_CLEANUP:
     SS_LEAVE(0);
 }