Skip to main content

Crate feral_ordering_core

Crate feral_ordering_core 

Source
Expand description

Shared contract types for FERAL’s fill-reducing ordering crates.

This crate exists so that feral-amd, feral-metis, feral-scotch, and feral-kahip all accept the same input type and emit the same stats / error types without a type-conversion layer at their boundary. The contract itself is documented in dev/plans/ordering-crate-contract.md.

The public surface is deliberately minimal:

Each ordering crate exposes exactly one contract-conforming function with the signature:

pub fn xxx_order(
    pattern: &feral_ordering_core::CscPattern<'_>,
    opts: &XxxOptions,
) -> Result<
    (Vec<i32>, feral_ordering_core::OrderingStats, XxxStats),
    feral_ordering_core::OrderingError,
>;

perm[k] = j means new index k corresponds to old index j (new-to-old). Callers that need the inverse compute it with a trivial helper.

Modules§

quotient_graph
Shared quotient-graph machinery for AMD-family bottom-up orderings.

Structs§

CscPattern
Borrowed symmetric sparsity pattern in CSC form.
OrderingStats
Diagnostic counters shared by every ordering producer.

Enums§

OrderingError
Shared error shape for the ordering-crate contract.

Constants§

CONTRACT_VERSION
Version of the shared ordering-crate contract.