Metis and Parmetis
The University of Minnesota provide a family of libraries for partitioning graphs and meshes, and computing fill-reducing ordering of sparse matrices. These libraries coming broadly under the label of "Metis". They are free to use for educational and research purposes.
module load metis
Metis is the sequential library for partitioning problems; it also supplies a number of simple stand-alone utility programs to access the Metis API for graph and mesh partitioning, and graph and mesh manipulation. The stand alone programs typically read a graph or mesh from file which must be in "metis" format.
Compiling and linking with Metis
The Metis library available via
module load metis comes both with and
without support for OpenMP. When using the compiler wrappers
ftn, the appropriate version will be selected based on the presence or
absence of, e.g.,
-fopenmp in the compile or link invocation.
$ cc --cray-print-opts
$ cc -fopenmp --cray-print-opts
metismodule is loaded.
Metis is currently provided as static libraries, so it should not
be necessary to re-load the
metis module at run time.
The serial utilities (e.g.
gpmetis for graph partitioning) are
supplied without OpenMP. These may then be run on the front end for
small problems if the
metis module is loaded.
metis module defines the environment variable
indicates the current location of the Metis installation.
parmetis libraries (and dependent modules)
have been compiled with the default 32-bit integer indexing, and
4-byte floating point options.
module load parmetis
Parmetis is the distributed memory incarnation of the Metis functionality.
As for the
metis module, Parmetis is integrated with use of the compiler
Parmetis depends on the
metis module, which is loaded automatically by
parmetis module defines the environment variable
holds the current location of the Parmetis installation. This
variable may not respond to a change of compiler version within a
given programming environment. If you wish to use
in such a context, you may need to (re-)load the
after the change of compiler version.
Module version history
metis/5.1.0recompiled and installed May 2023 (PE22.12)
partmetis/4.0.3recompiled and installed May 2023 (PE22.12)
metis/5.1.0installed October 2021 (PE21.04)
parmetis/4.0.3installed January 2021 (PE21.04)
metis/5.1.0installed January 2021
parmetis/4.0.3installed January 2021
Compile your own version
The build procedure used for the Metis and Parmetis libraries on Archer2 is available via github.
The latest Archer2 version of Metis can be installed
$ git clone https://github.com/ARCHER2-HPC/pe-scripts.git $ cd pe-scripts $ git checkout modules-2022-12 $ ./sh/tpsl/metis.sh --prefix=/path/to/install/location
--prefix determines the install location. This will download
and install the default version for the current programming environment.
Parmetis can be installed in via the same mechanism as Metis:
$ ./sh/tpsl/parmetis.sh --prefix=/path/to/install/location