Create MPI-2.2 Graph Topologies from ParMETIS partitions!

MPIParMETIS is a prototypic library which assists developers of parallel applications to use the scalable graph topology interface in MPI-2.2. The library offers several calls which accept output of the ParMETIS library and create (potentially reordered) MPI-2.2 graph topologies in a scalable way.

Download the MPIParMETIS Library

These versions of the library are available:

Note: The library is a prototype and likely to contain bugs! Please contact me if you find bugs and/or submit patches

Building the Library

  1. edit the Makefile.in and adjust it to your system (MPICC, PARMETIS_HOME, etc.)
  2. make
  3. include "mpiparmetis.h" in your program (you can remove mpi.h and parmetis.h)
  4. link the program with "libmpiparmetis.a" (-lmpiparmetis) (tested with ParMETIS 3.1.1 only, newer versions need to change the idxtype type)

Testing the Library

The subdirectory parmetis_test contains the ptest program which is supplied with the ParMETIS distribution. It has been changed to create a graph topology for each of the tests that are run. In order to test the implementation, compile ptest with "make" and run it with different numbers of processes and "rotor.graph" as input file.

Using the Library

Call ParMETIS as described on in the ParMETIS manual. Then pass the input graph specification to MPIX_Graph_create_parmetis_unweighted(). Currently, only unweighted k-way partitioning (ParMETIS_V3_PartKway() and ParMETIS_V3_PartGeomKway()) is supported by the library. The call MPIX_Graph_create_parmetis_unweighted() accepts the parameters:
  • idxtype *vtxdist: vertex distribution, identical to ParMETIS input
  • idxtype *xadj, *adjncy: graph description, identical to ParMETIS input
  • numflag: numbering scheme ('0' or '1', see ParMETIS distribution, '1' has not been tested yet)
  • idxtype *part: graph partition, identical to ParMETIS output
  • MPI_Comm *comm, *newcomm: input and output (graph topology) communicators

and creates a new graph topology communicator with potentially reordered ranks.

MPI-2.2 capable MPI Implementations

MPI-2.2 is a fairly recent standard and there are only few MPI-capable implementations. All tests for the software have been performed with MPICH2 (revision r5551).
CCPE
[1] T. Hoefler, R. Rabenseifner, H. Ritzdorf, B. R. de Supinski, R. Thakur, J. Larsson Träff:
 The Scalable Process Topology Interface of MPI 2.2 Concurrency and Computation: Practice and Experience. Vol 23, Nr. 4, pages 293-310, John Wiley & Sons, Ltd., ISSN: 1532-0634, Aug. 2010,