/** * Measurement wrapper for MPI_Group_union * @note Auto-generated by wrapgen from template: group_mgnt.w * @note C interface * @note Introduced with MPI 1.0 * @ingroup cg */ int MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group* newgroup) { const int event_gen_active = IS_EVENT_GEN_ON_FOR(CG); int return_val; if (event_gen_active) { EVENT_GEN_OFF(); esd_enter(epk_mpi_regid[EPK__MPI_GROUP_UNION]); } return_val = PMPI_Group_union(group1, group2, newgroup); if (*newgroup != MPI_GROUP_NULL) { epk_group_create(*newgroup); } if (event_gen_active) { esd_exit(epk_mpi_regid[EPK__MPI_GROUP_UNION]); EVENT_GEN_ON(); } return return_val; }
void vt_comm_create(MPI_Comm comm) { MPI_Group group, lgroup, rgroup; VT_MPI_INT inter; VT_MPI_INT size_grpv = 0; uint32_t cid; /* raise maximum number of communicators, if necessary */ if (last_comm == max_comms) RAISE_MAX(comms, max_comms, struct VTComm); /* ask for group of comm */ PMPI_Comm_test_inter(comm, &inter); if (inter) { PMPI_Comm_remote_group(comm, &rgroup); PMPI_Comm_group(comm, &lgroup); PMPI_Group_union(lgroup, rgroup, &group); PMPI_Group_free(&lgroup); PMPI_Group_free(&rgroup); } else { PMPI_Comm_group(comm, &group); } /* create group entry in grpv except for MPI_COMM_SELF and MPI_COMM_WORLD (if the current rank isn't the first available one) */ if ((comm != MPI_COMM_SELF && comm != MPI_COMM_WORLD) || (comm == MPI_COMM_WORLD && vt_my_trace_is_first_avail)) { group_to_bitvector( group ); size_grpv = world.size_grpv; } /* register mpi communicator definition */ #if (defined(VT_MT) || defined(VT_HYB)) VTTHRD_LOCK_IDS(); #endif /* VT_MT || VT_HYB */ cid = vt_def_mpi_comm(VT_CURRENT_THREAD, comm == MPI_COMM_WORLD ? VT_MPI_COMM_WORLD : comm == MPI_COMM_SELF ? VT_MPI_COMM_SELF : VT_MPI_COMM_OTHER, size_grpv, grpv); #if (defined(VT_MT) || defined(VT_HYB)) VTTHRD_UNLOCK_IDS(); #endif /* VT_MT || VT_HYB */ /* save communicator id for fast access in VT_COMM_ID */ if (comm == MPI_COMM_WORLD) vt_mpi_comm_world_cid = cid; else if (comm == MPI_COMM_SELF) vt_mpi_comm_self_cid = cid; /* enter comm in comms[] array */ comms[last_comm].comm = comm; comms[last_comm].cid = cid; last_comm++; /* clean up */ PMPI_Group_free(&group); }
int MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group * newgroup) { return PMPI_Group_union(group1, group2, newgroup); }
int MPI_Group_union ( MPI_Group group1, MPI_Group group2, MPI_Group *group_out ) { _MPI_COVERAGE(); return PMPI_Group_union (group1, group2, group_out); }