Classes and function to represent and solve large distributed sparse linear systems.
More...
|
| template<class ScalarType , class Apply > |
| void | ApplyPreconditionerOnHost (const CSysVector< ScalarType > &u, CSysVector< ScalarType > &v, Apply &&apply) |
| | Applies a preconditioner that only has a host implementation to vectors that live on the device: bring the input down, apply, put the result back.
|
| |
| template<class ScalarType , class Apply > |
| void | ApplyPreconditionerOnDevice (const CSysVector< ScalarType > &u, CSysVector< ScalarType > &v, bool useCuda, Apply &&apply) |
| | Mirror of ApplyPreconditionerOnHost: applies a device preconditioner to host vectors.
|
| |
| virtual | CPreconditioner< ScalarType >::~CPreconditioner ()=0 |
| | Destructor of the class.
|
| |
| static CPreconditioner * | CPreconditioner< ScalarType >::Create (ENUM_LINEAR_SOLVER_PREC kind, CSysMatrix< ScalarType > &jacobian, CGeometry *geometry, const CConfig *config) |
| | Factory method.
|
| |
Classes and function to represent and solve large distributed sparse linear systems.
◆ FgcrodrMode
Modes of using FGCRODR.
| Enumerator |
|---|
| NORMAL | Solve the linear system.
|
| SAME_MAT | "NORMAL" but knowing the matrix did not change.
|
◆ ApplyPreconditionerOnDevice()
template<class ScalarType , class Apply >
| void ApplyPreconditionerOnDevice |
( |
const CSysVector< ScalarType > & |
u, |
|
|
CSysVector< ScalarType > & |
v, |
|
|
bool |
useCuda, |
|
|
Apply && |
apply |
|
) |
| |
|
inline |
Mirror of ApplyPreconditionerOnHost: applies a device preconditioner to host vectors.
- Note
- For callers that drive the Krylov solvers themselves and so never went through CSysSolve::Solve, which is what normally leaves the vectors on the device (Newton-Krylov). Device expressions are on for the duration so that a nested solve also uses the device copies. Only
u is uploaded, v is always overwritten by the apply.
◆ ApplyPreconditionerOnHost()
template<class ScalarType , class Apply >
| void ApplyPreconditionerOnHost |
( |
const CSysVector< ScalarType > & |
u, |
|
|
CSysVector< ScalarType > & |
v, |
|
|
Apply && |
apply |
|
) |
| |
|
inline |
Applies a preconditioner that only has a host implementation to vectors that live on the device: bring the input down, apply, put the result back.
- Note
- This is what keeps LU-SGS, Linelet and PaStiX usable on the GPU path. The transfers are issued by one thread with the team synchronized around them, the apply itself is the normal OpenMP parallel host code.
◆ Create()
template<class ScalarType >
◆ ~CPreconditioner()
template<class ScalarType >