hpcg_kernel(1)

πŸ“¦ version 2.1.11, in fedora 43, fedora 44, nixos 26.05, nixpkgs unstable

πŸ’– hpcg_kernel πŸ’– β€” the NAME section, bestie

so this page is for hpcg_kernel β€” the high performance conjugate gradient kernel benchmark ✨ (it lives in section 1 of the Utility Commands manual, in case you were wondering 🫢)


🌈 SYNOPSIS 🌈

hpcg_kernel matrix_type solution_filename rhistory_filename [options]

πŸ’… DESCRIPTION πŸ’…

okay so here's the vibe: this program solves the linear equation Ax = b using an additive Schwarz, symmetric Gauss-Seidel preconditioned conjugate gradient solver. the coefficient matrix A of size lmn comes from a discretized three dimensional Poisson's equation, using the twenty-seven point central difference scheme β€” iconic, honestly. the coefficient matrix gets stored in the storage format you pick with matrix_type, and the solver is whatever you pick with options. πŸŽ€

it drops the solution into solution_filename in the extended Matrix Market format, and the residual history into rhistory_filename in the PLAIN format (peep the Appendix of the Lis User Guide for that one). the right-hand side vector is set such that the values of the elements of the solution are 1. and the values l, m and n? those are the numbers of grid points in each dimension. no cap. πŸ’…


✨ OVERRIDE OPTIONS ✨

the following options are supported, bestie β€” take notes πŸ“

  • -i linear solver β€” pick your linear solver. here's the whole menu:
    • -i {cg|1} β€” CG
    • -i {bicg|2} β€” BiCG
    • -i {cgs|3} β€” CGS
    • -i {bicgstab|4} β€” BiCGSTAB
    • -i {bicgstabl|5} β€” BiCGSTAB(l)
      • -ell [2] β€” the degree l
    • -i {gpbicg|6} β€” GPBiCG
    • -i {tfqmr|7} β€” TFQMR
    • -i {orthomin|8} β€” Orthomin(m)
      • -restart [40] β€” the restart value m
    • -i {gmres|9} β€” GMRES(m)
      • -restart [40] β€” the restart value m
    • -i {jacobi|10} β€” Jacobi
    • -i {gs|11} β€” Gauss-Seidel
    • -i {sor|12} β€” SOR
      • -omega [1.9] β€” the relaxation coefficient omega, and it's gotta be 0<omega<2
    • -i {bicgsafe|13} β€” BiCGSafe
    • -i {cr|14} β€” CR
    • -i {bicr|15} β€” BiCR
    • -i {crs|16} β€” CRS
    • -i {bicrstab|17} β€” BiCRSTAB
    • -i {gpbicr|18} β€” GPBiCR
    • -i {bicrsafe|19} β€” BiCRSafe
    • -i {fgmres|20} β€” FGMRES(m)
      • -restart [40] β€” the restart value m
    • -i {idrs|21} β€” IDR(s)
      • -irestart [2] β€” the restart value s
    • -i {idr1|22} β€” IDR(1)
    • -i {minres|23} β€” MINRES
    • -i {COCG|24} β€” COCG
    • -i {COCR|25} β€” COCR
  • -p preconditioner β€” and now the preconditioner, the other main character:
    • -p {none|0} β€” None
    • -p {jacobi|1} β€” Jacobi
    • -p {ilu|2} β€” ILU(k)
      • -ilu_fill [0] β€” the fill level k
    • -p {ssor|3} β€” SSOR
      • -ssor_omega [1.0] β€” the relaxation coefficient omega, still gotta be 0<omega<2
    • -p {hybrid|4} β€” Hybrid
      • -hybrid_i [sor] β€” the linear solver
      • -hybrid_maxiter [25] β€” the maximum number of the iterations
      • -hybrid_tol [1.0e-3] β€” the convergence criterion
      • -hybrid_omega [1.5] β€” the relaxation coefficient omega of the SOR (0<omega<2)
      • -hybrid_ell [2] β€” the degree l of the BiCGSTAB(l)
      • -hybrid_restart [40] β€” the restart values of the GMRES and Orthomin
    • -p {is|5} β€” I+S
      • -is_alpha [1.0] β€” the parameter alpha of I+alpha*S(m)
      • -is_m [3] β€” the parameter m of I+alpha*S(m)
    • -p {sainv|6} β€” SAINV
      • -sainv_drop [0.05] β€” the drop criterion
    • -p {saamg|7} β€” SA-AMG
      • -saamg_unsym [false] β€” select the unsymmetric version (heads up: the matrix structure must be symmetric πŸ‘€)
      • -saamg_theta [0.05|0.12] β€” the drop criterion
    • -p {iluc|8} β€” Crout ILU
      • -iluc_drop [0.05] β€” the drop criterion
      • -iluc_rate [5.0] β€” the ration of maximum fill-in
    • -p {ilut|9} β€” ILUT
      • -ilut_drop [0.05] β€” the drop criterion
      • -ilut_rate [5.0] β€” the ration of maximum fill-in
  • -adds true β€” Additive Schwarz
    • -adds_iter [1] β€” the number of the iteration

🫢 Other Options 🫢

  • -maxiter [1000] β€” the maximum number of the iterations
  • -tol [1.0e-12] β€” the convergence criterion
  • -print [0] β€” the display of the residual history
    • -print {none|0} β€” None
    • -print {mem|1} β€” Save the residual history
    • -print {out|2} β€” Display the residual history
    • -print {all|3} β€” Save the residual history and output it to the standard output
  • -scale [0] β€” the scaling
    • -scale {none|0} β€” No scaling
    • -scale {jacobi|1} β€” The Jacobi scaling
    • -scale {symm_diag|2} β€” The diagonal scaling
  • -initx_zeros [true] β€” the behavior of the initial vector x_0
    • -initx_zero {false|0} β€” Given values
    • -initx_zero {true|1} β€” All values are set to 0
  • -omp_num_threads [t] β€” the number of the threads (t represents the maximum number of the threads)
  • -storage [0] β€” the matrix storage format
  • -storage_block [2] β€” the block size of the BSR and BSC formats
  • -f [0] β€” the precision of the linear solver
    • -f {double|0} β€” Double precision
    • -f {quad|1} β€” Double-double (quadruple) precision
See Lis User Guide for full description. πŸ“– (fr fr, go read it if you want the whole lore)

πŸ’€ EXIT STATUS πŸ’€

the following exit values are returned:

  1. 0 β€” the process is normally terminated πŸ₯³
  2. unspecified β€” an error occurred 😭

πŸ‘‘ SEE ALSO πŸ‘‘

lis(3), lsolve(1), esolve(1), hpcg_spmvtest(1), spmvtest1(1), spmvtest2(1), spmvtest2b(1), spmvtest3(1), spmvtest3b(1), spmvtest4(1), spmvtest5(1)


and that's the whole page, bestie πŸ’– this lil' Man Page came out on 14 Sep 2017, filed under hpcg_kernel(1) β€” go slay some sparse linear systems, you got this βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from