cyqlone develop
Fast, parallel and vectorized solver for linear systems with optimal control structure.
Loading...
Searching...
No Matches
Block tridiagonal solvers

Detailed Description

Solvers for block tridiagonal linear systems.

Classes

struct  cyqlone::TricyqleParams< T >
 Parameters and settings for the Tricyqle block-tridiagonal solver. More...
struct  cyqlone::TricyqleSolver< VL, T, DefaultOrder, Ctx >
 Solver for block-tridiagonal systems using cyclic reduction (CR), parallel cyclic reduction (PCR), and preconditioned conjugate gradient (PCG) methods. More...

Enumerations

enum class  cyqlone::SolveMethod { cyqlone::SolveMethod::StairPCG , cyqlone::SolveMethod::JacobiPCG , cyqlone::SolveMethod::PCR }
 Defines how to solve the small linear system that remains after cyclic reduction. More...

Class Documentation

◆ cyqlone::TricyqleParams

struct cyqlone::TricyqleParams
Class Members
typedef T value_type T
Class Members
bool enable_prefetching = true Use prefetching during the reverse CR solve phase.
index_t pcg_max_iter = 100 Maximum number of preconditioned conjugate gradient iterations.
value_type pcg_tolerance = std::numeric_limits<value_type>::epsilon() / 10 Tolerance for the preconditioned conjugate gradient solver.
bool pcg_print_resid = false Enable printing of the residuals during PCG.
SolveMethod solve_method = SolveMethod::StairPCG Algorithm to use for solving the final reduced block tridiagonal system.
double pcr_max_update_fraction = 0.6 Tuning parameter for deciding when to update or re-factor the PCR factorization.

If the update rank exceeds this fraction of nx, the PCR factorization is recomputed

double cr_max_update_fraction_Y0 = 0.9 Tuning parameter for deciding when to update or re-factor the last subdiagonal blocks in the CR factorization.

If the update rank exceeds this fraction of nx, the last subdiagonal blocks are recomputed.

index_t parallel_solve_cr_threshold = 10 Threshold on nx for switching to a serial implementation of the reverse CR solve.
index_t parallel_factor_pcr_threshold = 20 Threshold on nx for switching to a serial implementation of the PCR factorization.

Enumeration Type Documentation

◆ SolveMethod

enum class cyqlone::SolveMethod
strong

#include <cyqlone/cyqlone-params.hpp>

Defines how to solve the small linear system that remains after cyclic reduction.

Enumerator
StairPCG 

Preconditioned Conjugate Gradient with staircase preconditioner (iterative).

JacobiPCG 

Preconditioned Conjugate Gradient with Jacobi preconditioner (iterative).

PCR 

Parallel Cyclic Reduction (direct).

Definition at line 11 of file cyqlone-params.hpp.