|
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.
|
|
void | save (File &file) const |
| Method for saving the matrix to a file.
|
|
__cuda_callable__ | SparseMatrixBase ()=default |
| Constructor with no parameters.
|
|
__cuda_callable__ | SparseMatrixBase (const SparseMatrixBase &matrix)=default |
| Copy constructor.
|
|
__cuda_callable__ | SparseMatrixBase (IndexType rows, IndexType columns, typename Base::ValuesViewType values, ColumnIndexesViewType columnIndexes, SegmentsViewType segments) |
| Constructor with all necessary data and views.
|
|
__cuda_callable__ | SparseMatrixBase (SparseMatrixBase &&matrix) noexcept=default |
| Move constructor.
|
|
__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) |
| This method calls forElements for all matrix rows.
|
|
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 | forAllRows (Function &&function) const |
| Method for parallel iteration over all matrix rows for constant instances.
|
|
void | forElements (IndexType begin, IndexType end, Function &&function) |
| Method for iteration over all matrix rows for non-constant instances.
|
|
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) .
|
|
void | forRows (IndexType begin, IndexType end, Function &&function) const |
| Method for parallel iteration over matrix rows from interval [begin, end) for constant instances.
|
|
ColumnIndexesViewType & | getColumnIndexes () |
| Getter of column indexes for nonconstant instances.
|
|
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 override |
| Returns number of non-zero matrix elements.
|
|
__cuda_callable__ RowView | getRow (IndexType rowIdx) |
| Non-constant getter of simple structure for accessing given matrix row.
|
|
__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.
|
|
const SegmentsViewType & | getSegments () const |
| Getter of segments for constant instances.
|
|
bool | operator!= (const Matrix &matrix) const |
| Comparison operator with another arbitrary matrix type.
|
|
SparseMatrixBase & | operator= (const SparseMatrixBase &)=delete |
| Copy-assignment operator.
|
|
SparseMatrixBase & | operator= (SparseMatrixBase &&)=delete |
| Move-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.
|
|
void | 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.
|
|
void | 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) |
| This method calls sequentialForRows for all matrix rows.
|
|
void | sequentialForAllRows (Function &&function) const |
| This method calls sequentialForRows for all matrix rows (for constant instances).
|
|
void | sequentialForRows (IndexType begin, IndexType end, Function &&function) |
| Method for sequential iteration over all matrix rows for non-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.
|
|
void | vectorProduct (const InVector &inVector, OutVector &outVector, const SegmentsReductionKernel &kernel) const |
|
__cuda_callable__ | MatrixBase ()=default |
| Basic constructor with no parameters.
|
|
__cuda_callable__ | MatrixBase (const MatrixBase &view)=default |
| Shallow copy constructor.
|
|
__cuda_callable__ | MatrixBase (IndexType rows, IndexType columns, ValuesViewType values) |
| Constructor with matrix dimensions and matrix elements values.
|
|
__cuda_callable__ | MatrixBase (MatrixBase &&view) noexcept=default |
| Move constructor.
|
|
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__ ValuesViewType & | getValues () |
| Returns a reference to a vector with the matrix elements values.
|
|
__cuda_callable__ const ValuesViewType & | getValues () const |
| Returns a constant reference to a vector with the matrix elements values.
|
|
bool | operator!= (const Matrix &matrix) const |
| Comparison operator with another arbitrary matrix view type.
|
|
bool | operator!= (const MatrixT &matrix) const |
|
__cuda_callable__ MatrixBase & | operator= (const MatrixBase &)=delete |
| Copy-assignment operator.
|
|
__cuda_callable__ MatrixBase & | operator= (MatrixBase &&)=delete |
| Move-assignment operator.
|
|
bool | operator== (const Matrix &matrix) const |
| Comparison operator with another arbitrary matrix view type.
|
|
bool | operator== (const MatrixT &matrix) const |
|
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. |