ParMETIS (Parallel Graph Partitioning and Fill-reducing Matrix Ordering) is an MPI-based parallel library that implements a variety of algorithms for partitioning unstructured graphs, meshes, and for computing fill-reducing orderings of sparse matrices. ParMETIS extends the functionality provided by METIS and includes routines that are especially suited for parallel AMR computations and large scale numerical simulations. The algorithms implemented in ParMETIS are based on the parallel multilevel k-way graph-partitioning, adaptive repartitioning, and parallel multi-constrained partitioning schemes developed in Karypis lab.
METIS (Serial Graph Partitioning and Fill-reducing Matrix Ordering) is a set of serial programs for partitioning graphs, partitioning finite element meshes, and producing fill reducing orderings for sparse matrices. The algorithms implemented in METIS are based on the multilevel recursive-bisection, multilevel k-way, and multi-constraint partitioning schemes developed in Karypis lab.
ParMETIS is available on Owens and Pitzer Clusters. The versions currently available at OSC are:
Version | Owens | Pitzer |
---|---|---|
4.0.3 | X* | X* |
METIS is available on Owens, and Pitzer Clusters. The versions currently available at OSC are:
Version | Owens | Pitzer |
---|---|---|
5.1.0 | X* | X* |
You can use module -r spider '.*metis.*'
to view available modules for a given machine. Feel free to contact OSC Help if you need other versions for your work.
ParMETIS / METIS is available to all OSC users. If you have any questions, please contact OSC Help.
University of Minnesota, Open source
To load ParMETIS, run the following command: module load parmetis
. To use the serial implementation, METIS, run the following command instead: module load metis
. You can use module spider metis
and module spider parmetis
to view available modules. Use module spider metis/version
and module spider parmetis/version
to check what modules should be loaded before load ParMETIS / METIS.
With the ParMETIS library loaded, the following environment variables will be available for use:
Variable | Use |
---|---|
$PARMETIS_CFLAGS | Use during your compilation step for C or C++ programs. |
$PARMETIS_LIBS |
Use when linking your program to ParMETIS. |
Similarly, when the METIS module is loaded, the following environment variables will be available:
VARIABLE | USE |
---|---|
$METIS_CFLAGS | Use during your compilation step for C programs. |
$METIS_LIBS | Use when linking your program to METIS. |
For example, to build the code myprog.cc with the METIS library you would use:
g++ -o myprog myprog.cc $METIS_LIBS
When you log into owens.osc.edu you are actually logged into a linux box referred to as the login node. To gain access to the mutiple processors in the computing environment, you must submit your job to the batch system for execution. Batch jobs can request mutiple nodes/cores and compute time up to the limits of the OSC systems. Refer to Queues and Reservations and Batch Limit Rules for more info. Batch jobs run on the compute nodes of the system and not on the login node. It is desirable for big problems since more resources can be used.
#!/bin/bash #SBATCH --job-name=myprogJob #SBATCH --nodes=1 --ntasks-per-node=28 module load gnu/4.8.5 module load parmetis cp foo.dat $TMPDIR cd $TMPDIR myprog < foo.dat > foo.out cp foo.out $SLURM_SUBMIT_DIR
To load ParMETIS, run the following command: module load parmetis
. To use the serial implementation, METIS, run the following command instead: module load metis
.
With the ParMETIS library loaded, the following environment variables will be available for use:
VARIABLE | USE |
---|---|
$PARMETIS_CFLAGS | Use during your compilation step for C or C++ programs. |
$PARMETIS_LIBS |
Use when linking your program to ParMETIS. |
Similarly, when the METIS module is loaded, the following environment variables will be available:
VARIABLE | USE |
---|---|
$METIS_CFLAGS | Use during your compilation step for C programs. |
$METIS_LIBS | Use when linking your program to METIS. |
For example, to build the code myprog.cc with the METIS library you would use:
g++ -o myprog myprog.cc $METIS_LIBS