Wraps a CUDA solver to work with CPU data.
More...
#include <SolverAdapter.hpp>
|
using | XGPU = Opm::gpuistl::GpuVector< real_type > |
|
|
template<class Comm > |
| SolverAdapter (Operator &op, Dune::ScalarProduct< X > &sp, std::shared_ptr< Dune::Preconditioner< X, X > > prec, scalar_real_type reduction, int maxit, int verbose, const Comm &comm) |
| constructor More...
|
|
virtual void | apply (X &x, X &b, double reduction, Dune::InverseOperatorResult &res) override |
|
virtual void | apply (X &x, X &b, Dune::InverseOperatorResult &res) override |
|
|
static constexpr auto | block_size = domain_type::block_type::dimension |
|
template<class Operator, template< class > class UnderlyingSolver, class X>
class Opm::gpuistl::SolverAdapter< Operator, UnderlyingSolver, X > Wraps a CUDA solver to work with CPU data.
- Template Parameters
-
Operator | the Dune::LinearOperator to use |
UnderlyingSolver | a Dune solver like class, eg Dune::BiCGSTABSolver |
X | the outer type to use (eg. Dune::BlockVector<Dune::FieldVector<...>>) |
◆ XGPU
template<class Operator , template< class > class UnderlyingSolver, class X >
◆ SolverAdapter()
template<class Operator , template< class > class UnderlyingSolver, class X >
Opm::gpuistl::SolverAdapter< Operator, UnderlyingSolver, X >::SolverAdapter |
( |
Operator & |
op, |
|
|
Dune::ScalarProduct< X > & |
sp, |
|
|
std::shared_ptr< Dune::Preconditioner< X, X > > |
prec, |
|
|
scalar_real_type |
reduction, |
|
|
int |
maxit, |
|
|
int |
verbose, |
|
|
const Comm & |
comm |
|
) |
| |
|
inline |
constructor
- Parameters
-
op | the linear operator (assumed CPU, the output (matrix) of which will be converted to a GPU variant) |
sp | the scalar product (assumed CPU, this will be converted to a GPU variant) |
reduction | the reduction factor passed to the iterative solver |
maxit | maximum number of iterations for the linear solver |
verbose | verbosity level |
comm | the communication object. If this is Dune::Amg::SequentialInformation, we assume a serial setup |
◆ apply() [1/2]
template<class Operator , template< class > class UnderlyingSolver, class X >
virtual void Opm::gpuistl::SolverAdapter< Operator, UnderlyingSolver, X >::apply |
( |
X & |
x, |
|
|
X & |
b, |
|
|
double |
reduction, |
|
|
Dune::InverseOperatorResult & |
res |
|
) |
| |
|
inlineoverridevirtual |
◆ apply() [2/2]
template<class Operator , template< class > class UnderlyingSolver, class X >
◆ block_size
template<class Operator , template< class > class UnderlyingSolver, class X >
The documentation for this class was generated from the following file:
|