gko::Transposable
Trait interface for operators that can produce their transpose and
conjugate transpose. Provides two virtual methods, transpose() and
conj_transpose(), both returning a fresh unique_ptr<LinOp> that
represents the transformed operator. Concrete classes that implement
this trait include matrix::Csr, matrix::Dense, the Krylov solvers
(which return the solver for the transposed system), and the
preconditioners that support it.
Use gko::as<Transposable>(linop) to access the trait at runtime when
working with a generic LinOp pointer.
-
class Transposable
Linear operators which support transposition should implement the Transposable interface.
It provides two functionalities, the normal transpose and the conjugate transpose.
The normal transpose returns the transpose of the linear operator without changing any of its elements representing the operation, \(B = A^{T}\).
The conjugate transpose returns the conjugate of each of the elements and additionally transposes the linear operator representing the operation, \(B
= A^{H}\).
Example: Transposing a Csr matrix:
//Transposing an object of LinOp type.
//The object you want to transpose.
auto op = matrix::Csr::create(exec);
//Transpose the object by first converting it to a transposable type.
auto trans = op->transpose();
Subclassed by
gko::Combination< ValueType >
gko::Composition< ValueType >
gko::Composition< value_type >
gko::Composition< gko::default_precision >
gko::Composition< default_precision >
gko::matrix::Coo< ValueType, IndexType >
gko::matrix::Csr< value_type, index_type >
gko::matrix::Csr< ValueType, IndexType >
gko::matrix::Dense< ValueType >
gko::matrix::Dense< value_type >
gko::matrix::Dense< to_complex< ValueType > >
gko::matrix::Dense< absolute_type >
gko::matrix::Dense< remove_complex< ValueType > >
gko::matrix::Diagonal< ValueType >
gko::matrix::Fbcsr< ValueType, IndexType >
gko::matrix::Identity< ValueType >
gko::matrix::SparsityCsr< value_type, index_type >
gko::matrix::SparsityCsr< IndexType, ValueType >
gko::matrix::SparsityCsr< ValueType, IndexType >
gko::preconditioner::Isai< IsaiType==isai_type::general ? isai_type::general :IsaiType==isai_type::spd ? isai_type::spd :IsaiType==isai_type::lower ? isai_type::upper :isai_type::lower, ValueType, IndexType >
gko::preconditioner::Isai< isai_type::lower, ValueType, IndexType >
gko::preconditioner::Isai< isai_type::upper, ValueType, IndexType >
gko::preconditioner::Isai< isai_type::general, ValueType, IndexType >
gko::preconditioner::Isai< isai_type::spd, ValueType, IndexType >
gko::preconditioner::Jacobi< ValueType, IndexType >
gko::solver::Bicg< ValueType >
gko::solver::Bicgstab< ValueType >
gko::solver::Cg< ValueType >
gko::solver::Cgs< ValueType >
gko::solver::Chebyshev< ValueType >
gko::solver::Fcg< ValueType >
gko::solver::Gcr< ValueType >
gko::solver::Gmres< ValueType >
gko::solver::Idr< ValueType >
gko::solver::Ir< ValueType >
gko::solver::LowerTrs< value_type, index_type >
gko::solver::LowerTrs< ValueType, IndexType >
gko::solver::Minres< ValueType >
gko::solver::PipeCg< ValueType >
gko::solver::UpperTrs< value_type, index_type >
gko::solver::UpperTrs< ValueType, IndexType >
gko::Combination< ValueType >
gko::Composition< ValueType >
gko::experimental::solver::Direct< ValueType, IndexType >
gko::matrix::Coo< ValueType, IndexType >
gko::matrix::Csr< ValueType, IndexType >
gko::matrix::Dense< ValueType >
gko::matrix::Diagonal< ValueType >
gko::matrix::Fbcsr< ValueType, IndexType >
gko::matrix::Fft
gko::matrix::Fft2
gko::matrix::Fft3
gko::matrix::Identity< ValueType >
gko::matrix::SparsityCsr< ValueType, IndexType >
gko::preconditioner::Ic< ValueType, IndexType >
gko::preconditioner::Ilu< ValueType, ReverseApply, IndexType >
gko::preconditioner::Isai< IsaiType, ValueType, IndexType >
gko::preconditioner::Jacobi< ValueType, IndexType >
gko::solver::Bicg< ValueType >
gko::solver::Bicgstab< ValueType >
gko::solver::Cg< ValueType >
gko::solver::Cgs< ValueType >
gko::solver::Chebyshev< ValueType >
gko::solver::Fcg< ValueType >
gko::solver::Gcr< ValueType >
gko::solver::Gmres< ValueType >
gko::solver::Idr< ValueType >
gko::solver::Ir< ValueType >
gko::solver::LowerTrs< ValueType, IndexType >
gko::solver::Minres< ValueType >
gko::solver::PipeCg< ValueType >
gko::solver::UpperTrs< ValueType, IndexType >
Public Functions
-
virtual std::unique_ptr<LinOp> transpose() const = 0
Returns a LinOp representing the transpose of the Transposable object.
- Returns:
a pointer to the new transposed object
-
virtual std::unique_ptr<LinOp> conj_transpose() const = 0
Returns a LinOp representing the conjugate transpose of the Transposable object.
- Returns:
a pointer to the new conjugate transposed object