2.13.4.1. Virtual Topology Creation

int MPI_Cart_create (
    MPI_Comm comm_old,
    int ndims, const int dims [], const int periods [],
    int reorder, MPI_Comm *comm_cart);

int MPI_Cart_sub (MPI_Comm comm, const int remain_dims [], MPI_Comm *newcomm);

int MPI_Graph_create (
    MPI_Comm comm_old,
    int nnodes, const int index [], const int edges [],
    int reorder, MPI_Comm *comm_graph);

int MPI_Dist_graph_create_adjacent (
    MPI_Comm comm_old,
    int indegree, const int sources [], const int sourceweights [],
    int outdegree, const int destinations [], const int destweights [],
    MPI_Info info, int reorder, MPI_Comm *comm_dist_graph);

int MPI_Dist_graph_create (
    MPI_Comm comm_old,
    int n, const int sources [], const int degrees [], const int destinations [], const int weights [],
    MPI_Info info, int reorder, MPI_Comm *comm_dist_graph);
cartesian

cartesian grid with optionally periodic dimensions

centralized graph

centralized graph definition with node degrees and flattened edge list

adjacent distributed graph

distributed graph definition which specifies incoming and outgoing edges at each node

general distributed graph

distributed graph definition which specifies arbitrary subset of edges at each node