+void smpi_topo_destroy(MPI_Topology topo);
+MPI_Topology smpi_topo_create(int ndims);
+int smpi_mpi_cart_create(MPI_Comm comm_old, int ndims, int dims[],
+ int periodic[], int reorder, MPI_Comm *comm_cart);
+int smpi_mpi_cart_shift(MPI_Comm comm, int direction, int disp,
+ int *rank_source, int *rank_dest);
+int smpi_mpi_cart_rank(MPI_Comm comm, int* coords, int* rank);
+int smpi_mpi_cart_get(MPI_Comm comm, int maxdims, int* dims, int* periods, int* coords);
+int smpi_mpi_cart_coords(MPI_Comm comm, int rank, int maxdims,
+ int coords[]);
+int smpi_mpi_cartdim_get(MPI_Comm comm, int *ndims);
+int smpi_mpi_dims_create(int nnodes, int ndims, int dims[]);
+int smpi_mpi_cart_sub(MPI_Comm comm, const int remain_dims[], MPI_Comm *newcomm);