Groups. A group contains processes belonging to an application
MPI_GROUP_EMPTY int MPI_Group_size (MPI_Group group, int *size); int MPI_Group_rank (MPI_Group group, int *rank); int MPI_Group_translate_ranks ( MPI_Group group1, int n, const int ranks1 [], MPI_Group group2, int ranks2 []); int MPI_Group_compare (MPI_Group group1, MPI_Group group2, int *result); int MPI_Group_union (MPI_Group group1, MPI_Group group2, MPI_Group *newgroup); int MPI_Group_difference (MPI_Group group1, MPI_Group group2, MPI_Group *newgroup); int MPI_Group_intersection (MPI_Group group1, MPI_Group group2, MPI_Group *newgroup); int MPI_Group_incl (MPI_Group group, int n, const int ranks [], MPI_Group *newgroup); int MPI_Group_excl (MPI_Group group, int n, const int ranks [], MPI_Group *newgroup); int MPI_Group_range_incl (MPI_Group group, int n, int ranges [][3], MPI_Group *newgroup); int MPI_Group_range_excl (MPI_Group group, int n, int ranges [][3], MPI_Group *newgroup); int MPI_Comm_group (MPI_Comm comm, MPI_Group *group); int MPI_Group_from_session_pset (MPI_Session session, const char *pset_name, MPI_Group *newgroup); int MPI_Group_free (MPI_Group *group);
created from other groups in the world model
created from process sets in the session model
processes addressed using rank from 0
to size - 1
Communicators. A communicator represents one or two groups in communication context
MPI_COMM_SELF MPI_COMM_WORLD int MPI_Comm_size (MPI_Comm comm, int *size); int MPI_Comm_rank (MPI_Comm comm, int *rank); int MPI_Comm_compare (MPI_Comm comm1, MPI_Comm comm2, int *result); int MPI_Comm_dup (MPI_Comm comm, MPI_Comm *newcomm); int MPI_Comm_dup_with_info (MPI_Comm comm, MPI_Info info, MPI_Comm *newcomm); int MPI_Comm_create (MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm); int MPI_Comm_create_group (MPI_Comm comm, MPI_Group group, int tag, MPI_Comm *newcomm); int MPI_Comm_create_from_group (MPI_Group group, const char *stringtag, MPI_Info info, MPI_Errhandler errhandler, MPI_Comm *newcomm); int MPI_Intercomm_create ( MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm, int remote_leader, int tag, MPI_Comm *newintercomm); int MPI_Intercomm_create_from_groups ( MPI_Group local_group, int local_leader, MPI_Group remote_group, int remote_leader, const char *stringtag, MPI_Info info, MPI_Errhandler errhandler, MPI_Comm *newintercomm); int MPI_Comm_split (MPI_Comm comm, int color, int key, MPI_Comm *newcomm); int MPI_Comm_split_type (MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm); int MPI_Intercomm_merge (MPI_Comm intercomm, int high, MPI_Comm *newintracomm); int MPI_Comm_free (MPI_Comm *comm); int MPI_Comm_set_info (MPI_Comm comm, MPI_Info info); int MPI_Comm_get_info (MPI_Comm comm, MPI_Info *info_used); int MPI_Comm_test_inter (MPI_Comm comm, int *flag); int MPI_Comm_remote_size (MPI_Comm comm, int *size); int MPI_Comm_remote_group (MPI_Comm comm, MPI_Group *group);
communication within single group
communication between two groups