|
using | ConstViewType = SparseMatrixView< std::add_const_t< Real >, Device, Index, MatrixType, SegmentsViewTemplate > |
| Matrix view type for constant instances.
|
template<typename Device_, typename Index_> |
using | SegmentsViewTemplate = SegmentsView< Device_, Index_ > |
| Templated type of segments view, i.e. sparse matrix format.
|
template<typename _Real = Real, typename _Device = Device, typename _Index = Index, typename _MatrixType = MatrixType, template< typename, typename > class _SegmentsView = SegmentsViewTemplate, typename _ComputeReal = ComputeReal> |
using | Self = SparseMatrixView< _Real, _Device, _Index, _MatrixType, _SegmentsView, _ComputeReal > |
| Helper type for getting self type or its modifications.
|
using | ViewType = SparseMatrixView< Real, Device, Index, MatrixType, SegmentsViewTemplate > |
| Type of related matrix view.
|
using | ColumnIndexesViewType |
using | ComputeRealType |
using | ConstRowView |
| Type for accessing constant matrix rows.
|
using | DefaultSegmentsReductionKernel |
| Type of the kernel used for parallel reductions on segments.
|
using | DeviceType |
| The device where the matrix is allocated.
|
using | IndexType |
| The type used for matrix elements indexing.
|
using | RealType |
| The type of matrix elements.
|
using | RowView |
| Type for accessing matrix rows.
|
using | SegmentsViewType |
| Type of segments view used by this matrix. It represents the sparse matrix format.
|
using | ConstValuesViewType |
| Type of constant vector view holding values of matrix elements.
|
using | DeviceType |
| The device where the matrix is allocated.
|
using | IndexType |
| The type used for matrix elements indexing.
|
using | RealType |
| The type of matrix elements.
|
using | RowCapacitiesType |
using | ValuesViewType |
| Type of vector view holding values of matrix elements.
|
|
__cuda_callable__ | SparseMatrixView ()=default |
| Constructor with no parameters.
|
__cuda_callable__ | SparseMatrixView (const SparseMatrixView &matrix)=default |
| Copy constructor.
|
__cuda_callable__ | SparseMatrixView (Index rows, Index columns, typename Base::ValuesViewType values, typename Base::ColumnIndexesViewType columnIndexes, typename Base::SegmentsViewType segments) |
| Constructor with all necessary data and views.
|
__cuda_callable__ | SparseMatrixView (SparseMatrixView &&matrix) noexcept=default |
| Move constructor.
|
__cuda_callable__ void | bind (SparseMatrixView &&view) |
| Method for rebinding (reinitialization) using another sparse matrix view.
|
__cuda_callable__ void | bind (SparseMatrixView &view) |
| Method for rebinding (reinitialization) using another sparse matrix view.
|
__cuda_callable__ ConstViewType | getConstView () const |
| Returns a non-modifiable view of the sparse matrix.
|
__cuda_callable__ ViewType | getView () |
| Returns a modifiable view of the sparse matrix.
|
SparseMatrixView & | operator= (const SparseMatrixView &)=delete |
| Copy-assignment operator.
|
__cuda_callable__ | SparseMatrixBase ()=default |
| Constructor with no parameters.
|
__cuda_callable__ void | addElement (IndexType row, IndexType column, const RealType &value, const RealType &thisElementMultiplicator=1.0) |
| Add element at given row and column to given value.
|
__cuda_callable__ IndexType | findElement (IndexType row, IndexType column) const |
| Finds element in the matrix and returns its position in the arrays with values and columnIndexes.
|
void | forAllElements (Function &&function) const |
| This method calls forElements for all matrix rows (for constant instances).
|
void | forAllRows (Function &&function) |
| Method for parallel iteration over all matrix rows.
|
void | forElements (IndexType begin, IndexType end, Function &&function) const |
| Method for iteration over all matrix rows for constant instances.
|
void | forRows (IndexType begin, IndexType end, Function &&function) |
| Method for parallel iteration over matrix rows from interval [begin, end).
|
const ColumnIndexesViewType & | getColumnIndexes () const |
| Getter of column indexes for constant instances.
|
void | getCompressedRowLengths (Vector &rowLengths) const |
| Computes number of non-zeros in each row.
|
__cuda_callable__ RealType | getElement (IndexType row, IndexType column) const |
| Returns value of matrix element at position given by its row and column index.
|
IndexType | getNonzeroElementsCount () const |
| Returns number of non-zero matrix elements.
|
__cuda_callable__ ConstRowView | getRow (IndexType rowIdx) const |
| Constant getter of simple structure for accessing given matrix row.
|
void | getRowCapacities (Vector &rowCapacities) const |
| Compute capacities of all rows.
|
__cuda_callable__ IndexType | getRowCapacity (IndexType row) const |
| Returns capacity of given matrix row.
|
SegmentsViewType & | getSegments () |
| Getter of segments for non-constant instances.
|
bool | operator!= (const Matrix &matrix) const |
| Comparison operator with another arbitrary matrix type.
|
SparseMatrixBase & | operator= (const SparseMatrixBase &)=delete |
| Copy-assignment operator.
|
bool | operator== (const Matrix &matrix) const |
| Comparison operator with another arbitrary matrix type.
|
void | print (std::ostream &str) const |
| Method for printing the matrix to output stream.
|
std::enable_if_t< Algorithms::SegmentsReductionKernels::isSegmentReductionKernel< SegmentsReductionKernel >::value > | reduceAllRows (Fetch &&fetch, const Reduce &reduce, Keep &&keep, const FetchValue &identity, const SegmentsReductionKernel &kernel=SegmentsReductionKernel{}) const |
| Method for performing general reduction on all matrix rows for constant instances.
|
std::enable_if_t< Algorithms::SegmentsReductionKernels::isSegmentReductionKernel< SegmentsReductionKernel >::value > | reduceRows (IndexType begin, IndexType end, Fetch &&fetch, const Reduce &reduce, Keep &&keep, const FetchValue &identity, const SegmentsReductionKernel &kernel=SegmentsReductionKernel{}) const |
| Method for performing general reduction on matrix rows for constant instances.
|
void | sequentialForAllRows (Function &&function) const |
| This method calls sequentialForRows for all matrix rows (for constant instances).
|
void | sequentialForRows (IndexType begin, IndexType end, Function &&function) const |
| Method for sequential iteration over all matrix rows for constant instances.
|
__cuda_callable__ void | setElement (IndexType row, IndexType column, const RealType &value) |
| Sets element at given row and column to given value.
|
void | sortColumnIndexes () |
| Sort matrix elements in each row by column indexes in ascending order.
|
void | transposedVectorProduct (const InVector &inVector, OutVector &outVector, typename ChooseSparseMatrixComputeReal< Real, int >::type matrixMultiplicator=1.0, typename ChooseSparseMatrixComputeReal< Real, int >::type outVectorMultiplicator=0.0, int begin=0, int end=0) const |
| Computes product of transposed matrix and vector.
|
void | vectorProduct (const InVector &inVector, OutVector &outVector, ComputeRealType matrixMultiplicator=1.0, ComputeRealType outVectorMultiplicator=0.0, IndexType begin=0, IndexType end=0, const SegmentsReductionKernel &kernel=SegmentsReductionKernel{}) const |
| Computes product of matrix and vector.
|
__cuda_callable__ | MatrixBase ()=default |
| Basic constructor with no parameters.
|
IndexType | getAllocatedElementsCount () const |
| Tells the number of allocated matrix elements.
|
__cuda_callable__ IndexType | getColumns () const |
| Returns number of matrix columns.
|
__cuda_callable__ IndexType | getRows () const |
| Returns number of matrix rows.
|
__cuda_callable__ const ValuesViewType & | getValues () const |
| Returns a constant reference to a vector with the matrix elements values.
|
__cuda_callable__ MatrixBase & | operator= (const MatrixBase &)=delete |
| Copy-assignment operator.
|
template<typename
Real, typename Device = Devices::Host, typename Index = int, typename
MatrixType = GeneralMatrix, template< typename Device_, typename Index_ > class SegmentsView = Algorithms::Segments::CSRView, typename ComputeReal = typename ChooseSparseMatrixComputeReal< Real, Index >::type>
class TNL::Matrices::SparseMatrixView< Real, Device, Index, MatrixType, SegmentsView, ComputeReal >
Implementation of sparse matrix view.
This is to prevent from appearing in Doxygen documentation.
It serves as an accessor to SparseMatrix for example when passing the matrix to lambda functions. SparseMatrix view can be also created in CUDA kernels.
- Template Parameters
-
Real | is a type of matrix elements. If Real equals bool the matrix is treated as binary and so the matrix elements values are not stored in the memory since we need to remember only coordinates of non-zero elements (which equal one). |
Device | is a device where the matrix is allocated. |
Index | is a type for indexing of the matrix elements. |
MatrixType | specifies a symmetry of matrix. See MatrixType. Symmetric matrices store only lower part of the matrix and its diagonal. The upper part is reconstructed on the fly. GeneralMatrix with no symmetry is used by default. |
Segments | is a structure representing the sparse matrix format. Depending on the pattern of the non-zero elements different matrix formats can perform differently especially on GPUs. By default Algorithms::Segments::CSR format is used. See also Algorithms::Segments::Ellpack, Algorithms::Segments::SlicedEllpack, Algorithms::Segments::ChunkedEllpack, and Algorithms::Segments::BiEllpack. |
ComputeReal | is the same as Real mostly but for binary matrices it is set to Index type. This can be changed by the user, of course. |