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)