1 min read

gat-cli Feature Matrix

Distribution Build Variants

For end-user builds, use the dist* feature flags:

FeatureSolversTUIVizIPOPTBinaryUse Case
distclarabel, highs~61 MBDesktop users
dist-headlessclarabel, highs~60 MBServers, CI
dist-nativeclarabel, highs~61 MBAC-OPF (requires libipopt)
dist-native-headlessclarabel, highs~60 MBHPC clusters

Build commands:

# Desktop (TUI + all solvers)
cargo build -p gat-cli --release --no-default-features --features dist

# Server/automation (headless)
cargo build -p gat-cli --release --no-default-features --features dist-headless

# With IPOPT for AC-OPF
cargo build -p gat-cli --release --no-default-features --features dist-native

CI Feature Matrix

The .github/workflows/rust.yml CI job runs on every push to test feature combinations:

  • Where it runs: ubuntu-latest
  • What it tests: cargo clippy and cargo test with various feature sets

CI feature sets:

SetComponentsPurpose
minimalsolver-clarabel + lean I/OFast CI, core functionality
minimal,full-io+ full I/O stackData format coverage
minimal,full-io,viz+ gat-vizVisualization helpers
all-solversclarabel + highsFull solver pool

Solver Features

Individual solver features can be combined:

FeatureSolverTypeRuntime Deps
solver-clarabelClarabelSOCP/SDPNone (pure Rust)
solver-highsHiGHSLP/MIPNone (pure Rust)
solver-ipoptIPOPTNLPlibipopt.so

GPU Acceleration Features

FeatureCapabilityHardware
gpuWGSL compute shadersVulkan/Metal/DX12

GPU acceleration provides parallel computation for:

  • ADMM branch flow calculation (2-10x speedup on large networks)
  • Monte Carlo reliability simulation
  • Batch power flow operations
# Build with GPU support
cargo build -p gat-cli --release --features gpu

Auto-fallback to CPU if GPU unavailable.

Legacy Features

For minimal or custom builds:

# Minimal (Clarabel only)
cargo build -p gat-cli --release --no-default-features --features minimal

# Custom combination
cargo build -p gat-cli --release --no-default-features --features "solver-clarabel,solver-highs,tui,viz"

Running the feature matrix catches regressions where a feature flag environment might compile but not run under different solver stacks.