liblaf.peach.linalg
¶
Linear-system protocols and solver backends.
Modules:
-
base–Base protocols and result containers for linear solvers.
-
cupy–CuPy-backed linear solvers.
-
fallback–Fallback linear-solver orchestration.
Classes:
-
BaseProblem–Marker protocol for linear-system problems.
-
CupyCG– -
CupyMinRes– -
CupySolver–Base class for linear solvers backed by CuPy sparse routines.
-
FallbackSolver– -
LinearSolver–Base class for linear solvers.
-
Problem–Protocol for a linear system
A x = b. -
Result–Result code returned by linear solvers.
-
Solution–Linear-solver output bundle.
-
State–Protocol for solver states that expose solution parameters.
-
Stats–Protocol for solver-specific summary statistics.
BaseProblem
¶
Bases: Protocol
flowchart TD
liblaf.peach.linalg.BaseProblem[BaseProblem]
click liblaf.peach.linalg.BaseProblem href "" "liblaf.peach.linalg.BaseProblem"
Marker protocol for linear-system problems.
CupyCG
¶
Bases: CupySolver
flowchart TD
liblaf.peach.linalg.CupyCG[CupyCG]
liblaf.peach.linalg.cupy._base.CupySolver[CupySolver]
liblaf.peach.linalg.base._solver.LinearSolver[LinearSolver]
liblaf.peach.linalg.cupy._base.CupySolver --> liblaf.peach.linalg.CupyCG
liblaf.peach.linalg.base._solver.LinearSolver --> liblaf.peach.linalg.cupy._base.CupySolver
click liblaf.peach.linalg.CupyCG href "" "liblaf.peach.linalg.CupyCG"
click liblaf.peach.linalg.cupy._base.CupySolver href "" "liblaf.peach.linalg.cupy._base.CupySolver"
click liblaf.peach.linalg.base._solver.LinearSolver href "" "liblaf.peach.linalg.base._solver.LinearSolver"
Parameters:
-
maxiter(int | None, default:None) – -
rtol(float, default:1e-05) – -
atol(float, default:0.0) –
Type Aliases:
-
Solution–Linear-solver output bundle.
Classes:
-
State–State recorded by CuPy-backed linear solvers.
-
Stats–Stats placeholder for CuPy-backed linear solvers.
Methods:
-
compute–Run one complete solve from an initialized state.
-
init–Create solver state from an initial parameter vector.
-
postprocess–Wrap final state and result metadata in a solution object.
-
solve–Initialize, compute, and postprocess a linear solve.
Attributes:
Solution
¶
State
¶
Bases: State
flowchart TD
liblaf.peach.linalg.CupyCG.State[State]
liblaf.peach.linalg.base._types.State[State]
liblaf.peach.linalg.base._types.State --> liblaf.peach.linalg.CupyCG.State
click liblaf.peach.linalg.CupyCG.State href "" "liblaf.peach.linalg.CupyCG.State"
click liblaf.peach.linalg.base._types.State href "" "liblaf.peach.linalg.base._types.State"
State recorded by CuPy-backed linear solvers.
Parameters:
-
params(Vector) –Current solution estimate.
-
info(int, default:-1) – -
step(int | None, default:None) –
Attributes:
Stats
¶
Bases: Stats
flowchart TD
liblaf.peach.linalg.CupyCG.Stats[Stats]
liblaf.peach.linalg.base._types.Stats[Stats]
liblaf.peach.linalg.base._types.Stats --> liblaf.peach.linalg.CupyCG.Stats
click liblaf.peach.linalg.CupyCG.Stats href "" "liblaf.peach.linalg.CupyCG.Stats"
click liblaf.peach.linalg.base._types.Stats href "" "liblaf.peach.linalg.base._types.Stats"
Stats placeholder for CuPy-backed linear solvers.
Parameters:
-
absolute_residual(Scalar, default:None) – -
relative_residual(Scalar, default:None) –
Attributes:
-
absolute_residual(Scalar) – -
relative_residual(Scalar) –
compute
¶
compute(problem: BaseProblem, state: CupyState) -> Result
Run one complete solve from an initialized state.
Source code in src/liblaf/peach/linalg/cupy/_base.py
init
¶
init(problem: BaseProblem, params: Vector) -> CupyState
postprocess
¶
postprocess(
problem: BaseProblem, state: CupyState, result: Result
) -> Solution
Wrap final state and result metadata in a solution object.
Source code in src/liblaf/peach/linalg/cupy/_base.py
solve
¶
solve(
problem: BaseProblem, params: Vector
) -> Solution[S, T]
Initialize, compute, and postprocess a linear solve.
Source code in src/liblaf/peach/linalg/base/_solver.py
CupyMinRes
¶
Bases: CupySolver
flowchart TD
liblaf.peach.linalg.CupyMinRes[CupyMinRes]
liblaf.peach.linalg.cupy._base.CupySolver[CupySolver]
liblaf.peach.linalg.base._solver.LinearSolver[LinearSolver]
liblaf.peach.linalg.cupy._base.CupySolver --> liblaf.peach.linalg.CupyMinRes
liblaf.peach.linalg.base._solver.LinearSolver --> liblaf.peach.linalg.cupy._base.CupySolver
click liblaf.peach.linalg.CupyMinRes href "" "liblaf.peach.linalg.CupyMinRes"
click liblaf.peach.linalg.cupy._base.CupySolver href "" "liblaf.peach.linalg.cupy._base.CupySolver"
click liblaf.peach.linalg.base._solver.LinearSolver href "" "liblaf.peach.linalg.base._solver.LinearSolver"
Parameters:
-
maxiter(int | None, default:None) – -
shift(float, default:0.0) – -
tol(float, default:1e-05) –
Type Aliases:
-
Solution–Linear-solver output bundle.
Classes:
-
State–State recorded by CuPy-backed linear solvers.
-
Stats–Stats placeholder for CuPy-backed linear solvers.
Methods:
-
compute–Run one complete solve from an initialized state.
-
init–Create solver state from an initial parameter vector.
-
postprocess–Wrap final state and result metadata in a solution object.
-
solve–Initialize, compute, and postprocess a linear solve.
Attributes:
Solution
¶
State
¶
Bases: State
flowchart TD
liblaf.peach.linalg.CupyMinRes.State[State]
liblaf.peach.linalg.base._types.State[State]
liblaf.peach.linalg.base._types.State --> liblaf.peach.linalg.CupyMinRes.State
click liblaf.peach.linalg.CupyMinRes.State href "" "liblaf.peach.linalg.CupyMinRes.State"
click liblaf.peach.linalg.base._types.State href "" "liblaf.peach.linalg.base._types.State"
State recorded by CuPy-backed linear solvers.
Parameters:
-
params(Vector) –Current solution estimate.
-
info(int, default:-1) – -
step(int | None, default:None) –
Attributes:
Stats
¶
Bases: Stats
flowchart TD
liblaf.peach.linalg.CupyMinRes.Stats[Stats]
liblaf.peach.linalg.base._types.Stats[Stats]
liblaf.peach.linalg.base._types.Stats --> liblaf.peach.linalg.CupyMinRes.Stats
click liblaf.peach.linalg.CupyMinRes.Stats href "" "liblaf.peach.linalg.CupyMinRes.Stats"
click liblaf.peach.linalg.base._types.Stats href "" "liblaf.peach.linalg.base._types.Stats"
Stats placeholder for CuPy-backed linear solvers.
Parameters:
-
absolute_residual(Scalar, default:None) – -
relative_residual(Scalar, default:None) –
Attributes:
-
absolute_residual(Scalar) – -
relative_residual(Scalar) –
compute
¶
compute(problem: BaseProblem, state: CupyState) -> Result
Run one complete solve from an initialized state.
Source code in src/liblaf/peach/linalg/cupy/_base.py
init
¶
init(problem: BaseProblem, params: Vector) -> CupyState
postprocess
¶
postprocess(
problem: BaseProblem, state: CupyState, result: Result
) -> Solution
Wrap final state and result metadata in a solution object.
Source code in src/liblaf/peach/linalg/cupy/_base.py
solve
¶
solve(
problem: BaseProblem, params: Vector
) -> Solution[S, T]
Initialize, compute, and postprocess a linear solve.
Source code in src/liblaf/peach/linalg/base/_solver.py
CupySolver
¶
Bases: LinearSolver[CupyState, CupyStats]
flowchart TD
liblaf.peach.linalg.CupySolver[CupySolver]
liblaf.peach.linalg.base._solver.LinearSolver[LinearSolver]
liblaf.peach.linalg.base._solver.LinearSolver --> liblaf.peach.linalg.CupySolver
click liblaf.peach.linalg.CupySolver href "" "liblaf.peach.linalg.CupySolver"
click liblaf.peach.linalg.base._solver.LinearSolver href "" "liblaf.peach.linalg.base._solver.LinearSolver"
Base class for linear solvers backed by CuPy sparse routines.
Parameters:
-
maxiter(int | None, default:None) –
Type Aliases:
-
Solution–Linear-solver output bundle.
Methods:
-
compute–Run one complete solve from an initialized state.
-
init–Create solver state from an initial parameter vector.
-
postprocess–Wrap final state and result metadata in a solution object.
-
solve–Initialize, compute, and postprocess a linear solve.
Attributes:
Solution
¶
compute
¶
compute(problem: BaseProblem, state: CupyState) -> Result
Run one complete solve from an initialized state.
Source code in src/liblaf/peach/linalg/cupy/_base.py
init
¶
init(problem: BaseProblem, params: Vector) -> CupyState
postprocess
¶
postprocess(
problem: BaseProblem, state: CupyState, result: Result
) -> Solution
Wrap final state and result metadata in a solution object.
Source code in src/liblaf/peach/linalg/cupy/_base.py
solve
¶
solve(
problem: BaseProblem, params: Vector
) -> Solution[S, T]
Initialize, compute, and postprocess a linear solve.
Source code in src/liblaf/peach/linalg/base/_solver.py
FallbackSolver
¶
Bases: LinearSolver[FallbackState, FallbackStats]
flowchart TD
liblaf.peach.linalg.FallbackSolver[FallbackSolver]
liblaf.peach.linalg.base._solver.LinearSolver[LinearSolver]
liblaf.peach.linalg.base._solver.LinearSolver --> liblaf.peach.linalg.FallbackSolver
click liblaf.peach.linalg.FallbackSolver href "" "liblaf.peach.linalg.FallbackSolver"
click liblaf.peach.linalg.base._solver.LinearSolver href "" "liblaf.peach.linalg.base._solver.LinearSolver"
Parameters:
-
solvers(list[LinearSolver], default:[CupyCG(maxiter=None, rtol=1e-05, atol=0.0), CupyMinRes(maxiter=None, shift=0.0, tol=1e-05)]) –
Type Aliases:
-
Solution–Linear-solver output bundle.
Methods:
-
compute–Run one complete solve from an initialized state.
-
init–Create solver state from an initial parameter vector.
-
postprocess–Wrap final state and result metadata in a solution object.
-
solve–Initialize, compute, and postprocess a linear solve.
Attributes:
-
solvers(list[LinearSolver]) –
solvers
class-attribute
instance-attribute
¶
solvers: list[LinearSolver] = field(
factory=_default_solvers
)
Solution
¶
Solution = Solution[FallbackState, FallbackStats]
compute
¶
compute(
problem: BaseProblem, state: FallbackState
) -> Result
Run one complete solve from an initialized state.
Source code in src/liblaf/peach/linalg/fallback/_fallback.py
init
¶
init(problem: BaseProblem, params: Vector) -> FallbackState
postprocess
¶
postprocess(
problem: BaseProblem, state: S, result: Result
) -> Solution[S, T]
Wrap final state and result metadata in a solution object.
Source code in src/liblaf/peach/linalg/base/_solver.py
solve
¶
solve(
problem: BaseProblem, params: Vector
) -> Solution[S, T]
Initialize, compute, and postprocess a linear solve.
Source code in src/liblaf/peach/linalg/base/_solver.py
LinearSolver
¶
Base class for linear solvers.
Methods:
-
compute–Run one complete solve from an initialized state.
-
init–Create solver state from an initial parameter vector.
-
postprocess–Wrap final state and result metadata in a solution object.
-
solve–Initialize, compute, and postprocess a linear solve.
compute
¶
compute(problem: BaseProblem, state: S) -> Result
init
¶
init(problem: BaseProblem, params: Vector) -> S
postprocess
¶
postprocess(
problem: BaseProblem, state: S, result: Result
) -> Solution[S, T]
Wrap final state and result metadata in a solution object.
Source code in src/liblaf/peach/linalg/base/_solver.py
solve
¶
solve(
problem: BaseProblem, params: Vector
) -> Solution[S, T]
Initialize, compute, and postprocess a linear solve.
Source code in src/liblaf/peach/linalg/base/_solver.py
Problem
¶
Bases: Protocol
flowchart TD
liblaf.peach.linalg.Problem[Problem]
click liblaf.peach.linalg.Problem href "" "liblaf.peach.linalg.Problem"
Protocol for a linear system A x = b.
Methods:
-
matvec–Apply the system matrix to
x. -
precondition–Apply an optional left preconditioner to
x. -
rmatvec–Apply the transpose or adjoint system matrix to
x. -
rprecondition–Apply an optional transpose or adjoint preconditioner to
x.
Attributes:
-
b(Vector) –Right-hand-side vector.
Result
¶
Bases: StrEnum
flowchart TD
liblaf.peach.linalg.Result[Result]
click liblaf.peach.linalg.Result href "" "liblaf.peach.linalg.Result"
Result code returned by linear solvers.
Attributes:
-
BREAKDOWN– -
MAX_STEPS_REACHED– -
PRIMARY_SUCCESS– -
SECONDARY_SUCCESS– -
SUCCESS– -
UNKNOWN_ERROR– -
success(bool) –Whether the result represents an accepted solution.