Libraries |
ParMetisParMetis is a library and application suite for efficient partitioning of graphs and other manipulation of meshes and graphs. Graph partioning is important in load balancing and communication optimization in parallel calculations which use unstructured grids or large sparse matrices. ParMetis uses MPI. ParMetis takes a large symmetric graph and splits it into k sub-graphs which maximally satisfy an objective function (least communication volume, fewest edge-cuts, etc.) These subgraphs represent an efficient partitioning of the graph nodes on a distributed memory computer. Metis can also effceintly refine a partition when a graph changes slightly (such as when an unstructured grid evolves over time).
SetupThe modules package controls access to Metis software. module load parmetis in your .profile.ext or .login.ext files, or type this command whenever you want to access Metis for a single session. Metis ApplicationsMetis contains several stand alone applications for partitoning and manipulation of graphs and meshes. Information about the quality of the partition, timings, and diagnostics are written to stdout.
Metis ProgrammingThe libmetis is described fully in the manual and in proto.h. The three workhorse routines are compared below.
The API also includes for wieghted and constrained partitioning. ExamplesConsider the following 2d data set and a nearest neighbor undirected graph:
The graph above can be created from the data given by a variety of means, e.g., you can use the excellent program Triangle . From the adjacency matrix for the above graph Metis can produce a set of subgraphs which minimize communication required between subgraphs. The format for Metis graph files is : nvertices nsegments
Where nnodes and nsegments are the numbers of vertices and and segments respectively. To break the graph above into 10 sub graphs use the command kmetis nersc_graph 10 which will produce a file nersc_graph.part.10 which lists the 10 partitions (labeled 0-9). In the image below color boundaries shows the distinct subgraphs.
Several other examples are in /usr/common/usg/metis/{version}/Graphs. Documentation and Help |
![]() |
Page last modified: Fri, 15 Feb 2008 17:45:44 GMT Page URL: http://www.nersc.gov/nusers/resources/software/libs/math/metis/ Web contact: webmaster@nersc.gov Computing questions: consult@nersc.gov Privacy and Security Notice |
![]() |