#graph #mesh #partitioning #matrix #order #api-bindings

metis

Idiomatic wrapper for METIS, the serial graph partitioner and fill-reducing matrix orderer

5 releases

0.2.1 Mar 10, 2024
0.2.0 Mar 6, 2024
0.1.2 Jun 19, 2023
0.1.1 Jul 2, 2021
0.1.0 Jul 2, 2021

#102 in Math

Download history 5/week @ 2024-02-16 21/week @ 2024-02-23 148/week @ 2024-03-01 245/week @ 2024-03-08 30/week @ 2024-03-15 20/week @ 2024-03-22 110/week @ 2024-03-29 78/week @ 2024-04-05

246 downloads per month

MIT/Apache

5MB
40K SLoC

C 31K SLoC // 0.2% comments GLSL 7.5K SLoC Rust 1K SLoC // 0.0% comments Perl 35 SLoC // 0.1% comments Shell 27 SLoC Batch 7 SLoC

metis-rs

metis-rs is a Rust library providing idiomatic bindings to libmetis, a library for graph and mesh partitioning. It is made to be used with Rust version 1.67.0 or above.

Getting Started

Library released on crates.io. To use it, add the following to your Cargo.toml:

[dependencies]
metis-rs = "0.2"

The list of available versions and a change log are available in the CHANGELOG.md file.

Features

Use of Vendored Feature

The vendored feature enables metis-rs to build METIS from source and link to it statically. If not enabled, metis-rs looks for an existing installation and links to it dynamically.

Use of System-wide Feature

The use-system feature enables metis-rs to use the system-wide installation of METIS. If not enabled, metis-rs will refer to its own version of METIS.

Please note, vendored and use-system features are mutually exclusive.

Guidance for non-standard METIS installations

If you enabled the use-system feature and METIS is installed in a non-standard location, you must set the following environment variables:

export METISDIR=path/to/your/metis/installation
export CPATH="$METISDIR/include"
export RUSTFLAGS="-L$METISDIR/lib"

$METISDIR must point to a directory containing both lib/ and include/ directories with METIS's shared libraries and headers, respectively.

Building the documentation

To build the documentation, especially if METIS is installed in a non-standard location, set the RUSTDOCFLAGS environment variable:

export RUSTDOCFLAGS="-L$METISDIR/lib"

Then the following command will generate and open the documentation:

cargo doc --no-deps --open

License

metis-rs is distributed under the terms of both the MIT license and the Apache License (Version 2.0). Refer to LICENSE-APACHE and LICENSE-MIT for more details.

Dependencies