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:
CscPattern— borrowed, full-symmetric, 0-based,i32-indexed.OrderingStats— producer-agnostic diagnostic counters.OrderingError— shared error shape.CONTRACT_VERSION— bumped on any breaking change.
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.
- Ordering
Stats - Diagnostic counters shared by every ordering producer.
Enums§
- Ordering
Error - Shared error shape for the ordering-crate contract.
Constants§
- CONTRACT_
VERSION - Version of the shared ordering-crate contract.