Command-line reference¶
See build and run for examples. Options below come from this revision’s executable.
Solve a Laplacian or SDDM system Ax = b via approximate Cholesky + PCG. The input .mtx may be an assembled Laplacian/SDDM operator or a graph adjacency/pattern matrix; which one is auto-detected and reported (see --input-kind), and Laplacian vs SDDM is auto-detected within the solver
Usage: apxchol [OPTIONS] input
Positionals:
input TEXT:FILE REQUIRED Input graph in MatrixMarket format
Options:
-h,--help Print this help message and exit
-V,--version Print version and build info
--input-kind ENUM:({adjacency,auto,laplacian}) AND ({adjacency->2,auto->0,laplacian->1}) [auto]
How to read the input file: 'laplacian' = an already-assembled Laplacian/SDDM operator, solved as given; 'adjacency' = a graph adjacency/pattern matrix, from which L = D - A is assembled (edge weight |value|, self-loops dropped); 'auto' = decide from the off-diagonal signs and the diagonal, and refuse if ambiguous
-o,--output TEXT Write solution vector to MatrixMarket file
--sampler ENUM:value in {gks->0,trace_cycle->1} OR {0,1}
Clique sampler: gks or trace_cycle
--exact-core-max-h UINT [by route]
trace_cycle only: emit the exact clique on heavy cores of at most this many vertices (0 = off; default: 4 on host, 0 for GPU-owned setup)
--double-cycle-min-h UINT [0]
trace_cycle only: emit two independent cycles on heavy cores of at least this many vertices (0 = off; 20-32 targets hub-like stars)
--backend ENUM:({auto,cpu,gpu}) AND ({auto->0,cpu->1,gpu->2}) [auto]
Complete setup/solve route: auto, cpu or gpu (no runtime fallback)
--threads INT:NONNEGATIVE [0]
CPU thread ceiling (0 = OpenMP default; small work may use fewer)
--factor-storage ENUM:value in {auto->0,float16->1,float32->2} OR {0,1,2}
Factor storage: auto, float16 or float32
--cpu-schedule ENUM:value in {auto->0,levels->1} OR {0,1}
CPU triangular-solve schedule: auto or levels
--factor-drop FLOAT [0.0001]
Relative factor-entry dropping threshold in [0, 1] (0 disables dropping)
--regularization FLOAT [0] Minimum preconditioner diagonal excess relative to the diagonal
--lump-max-mass FLOAT [0.25]
Maximum positive off-diagonal mass fraction allowed for lumping
--no-timings Disable solver timing collection
--tol FLOAT [1e-08] Relative residual tolerance
--maxiter INT [200] Maximum PCG iterations
--seed UINT [42] Random seed for factorization and test RHS
--degree-quantile FLOAT [-1]
IS degree cap as a quantile of current degrees in (0,1); 0 = use --degree-multiplier; -1 = pick by route (0.2 CPU/Metal, 0.5 CUDA; Metal requires (0,1))
--degree-multiplier FLOAT [2]
IS degree threshold = multiplier × avg_degree (fallback, used only when --degree-quantile is 0)
--omp-threshold UINT [2000]
Min active vertices before engaging OpenMP
--is TEXT:{block_greedy,priority_greedy,baumann_kyng} [block_greedy]
Independent set strategy (block_greedy, priority_greedy, baumann_kyng)
-q,--quiet Excludes: --verbose
Suppress non-error output
-v,--verbose Excludes: --quiet
Verbose output
[Option Group: Right-hand side (exactly one required)]
[Exactly 1 of the following options is required]
Options:
--rhs TEXT:FILE Excludes: --random-rhs
RHS vector in MatrixMarket format
--random-rhs Excludes: --rhs
Generate a random RHS, compatible with Laplacian components (uses --seed)