Template Numerical Library version\ main:bb09b17
|
Implementation of sparse sandbox matrix view. More...
#include <TNL/Matrices/Sandbox/SparseSandboxMatrixView.h>
Public Types | |
using | ColumnsIndexesViewType |
using | ConstColumnsIndexesViewType = typename ColumnsIndexesViewType::ConstViewType |
using | ConstRowCapacitiesView = typename RowCapacitiesView::ConstViewType |
using | ConstRowView = SparseSandboxMatrixRowView< ConstValuesViewType, ConstColumnsIndexesViewType, isBinary() > |
Type for accessing constant matrix rows. | |
using | ConstValuesViewType = typename ValuesViewType::ConstViewType |
using | ConstViewType = SparseSandboxMatrixView< std::add_const_t< Real >, Device, Index, MatrixType > |
Matrix view type for constant instances. | |
using | DeviceType = Device |
The device where the matrix is allocated. | |
using | IndexType = Index |
The type used for matrix elements indexing. | |
using | RealType = Real |
The type of matrix elements. | |
using | RowCapacitiesView = Containers::VectorView< Index, Device, Index > |
using | RowPointersView |
Type of container view for CSR row pointers. | |
using | RowView = SparseSandboxMatrixRowView< ValuesViewType, ColumnsIndexesViewType, isBinary() > |
Type for accessing matrix rows. | |
template<typename _Real = Real, typename _Device = Device, typename _Index = Index, typename _MatrixType = MatrixType> | |
using | Self = SparseSandboxMatrixView< _Real, _Device, _Index, _MatrixType > |
Helper type for getting self type or its modifications. | |
using | ValuesViewType = typename BaseType::ValuesViewType |
using | ViewType = SparseSandboxMatrixView< Real, Device, Index, MatrixType > |
Templated type of segments view, i.e. sparse matrix format. | |
Public Types inherited from TNL::Matrices::MatrixBase< Real, Devices::Host, int, GeneralMatrix, Algorithms::Segments::RowMajorOrder > | |
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. | |
Public Member Functions | |
__cuda_callable__ | SparseSandboxMatrixView () |
Constructor with no parameters. | |
__cuda_callable__ | SparseSandboxMatrixView (const SparseSandboxMatrixView &matrix)=default |
Copy constructor. | |
__cuda_callable__ | SparseSandboxMatrixView (IndexType rows, IndexType columns, const ValuesViewType &values, const ColumnsIndexesViewType &columnIndexes, const RowPointersView &rowPointers) |
Constructor with all necessary data and views. | |
__cuda_callable__ | SparseSandboxMatrixView (SparseSandboxMatrixView &&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__ void | bind (SparseSandboxMatrixView &&view) |
Method for rebinding (reinitialization) using another matrix view. | |
__cuda_callable__ void | bind (SparseSandboxMatrixView &view) |
Method for rebinding (reinitialization) using another matrix view. | |
template<typename Function > | |
void | forAllElements (Function &function) |
This method calls forElements for all matrix rows. | |
template<typename Function > | |
void | forAllElements (Function &function) const |
This method calls forElements for all matrix rows (for constant instances). | |
template<typename Function > | |
void | forAllRows (Function &&function) |
Method for parallel iteration over all matrix rows. | |
template<typename Function > | |
void | forAllRows (Function &&function) const |
Method for parallel iteration over all matrix rows for constant instances. | |
template<typename Function > | |
void | forElements (IndexType begin, IndexType end, Function &function) |
Method for iteration over all matrix rows for non-constant instances. | |
template<typename Function > | |
void | forElements (IndexType begin, IndexType end, Function &function) const |
Method for iteration over all matrix rows for constant instances. | |
template<typename Function > | |
void | forRows (IndexType begin, IndexType end, Function &&function) |
Method for parallel iteration over matrix rows from interval [begin, end) . | |
template<typename Function > | |
void | forRows (IndexType begin, IndexType end, Function &&function) const |
Method for parallel iteration over matrix rows from interval [begin, end) for constant instances. | |
ColumnsIndexesViewType & | getColumnIndexes () |
Getter of column indexes for nonconstant instances. | |
const ColumnsIndexesViewType & | getColumnIndexes () const |
Getter of segments for non-constant instances. | |
template<typename Vector > | |
void | getCompressedRowLengths (Vector &rowLengths) const |
Computes number of non-zeros in each row. | |
__cuda_callable__ ConstViewType | getConstView () const |
Returns a non-modifiable view of the sparse matrix. | |
__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 (const IndexType &rowIdx) |
Non-constant getter of simple structure for accessing given matrix row. | |
__cuda_callable__ ConstRowView | getRow (const IndexType &rowIdx) const |
Constant getter of simple structure for accessing given matrix row. | |
template<typename Vector > | |
void | getRowCapacities (Vector &rowCapacities) const |
Compute capacities of all rows. | |
__cuda_callable__ IndexType | getRowCapacity (IndexType row) const |
Returns capacity of given matrix row. | |
std::string | getSerializationTypeVirtual () const |
Returns string with serialization type. | |
__cuda_callable__ ViewType | getView () |
Returns a modifiable view of the sparse matrix. | |
template<typename Matrix > | |
bool | operator!= (const Matrix &matrix) const |
Comparison operator with another arbitrary matrix type. | |
SparseSandboxMatrixView & | operator= (const SparseSandboxMatrixView &)=delete |
Copy-assignment operator. | |
template<typename Matrix > | |
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. | |
template<typename Fetch , typename Reduce , typename Keep , typename FetchReal > | |
void | reduceAllRows (Fetch &&fetch, const Reduce &reduce, Keep &&keep, const FetchReal &zero) const |
Method for performing general reduction on all matrix rows for constant instances. | |
template<typename Fetch , typename Reduce , typename Keep , typename FetchReal > | |
void | reduceRows (IndexType begin, IndexType end, Fetch &&fetch, const Reduce &reduce, Keep &&keep, const FetchReal &zero) const |
Method for performing general reduction on matrix rows for constant instances. | |
template<typename Fetch , typename Reduce , typename Keep , typename FetchValue > | |
void | reduceRows (IndexType begin, IndexType end, Fetch &&fetch, const Reduce &reduce, Keep &&keep, const FetchValue &zero) const |
template<typename Function > | |
void | sequentialForAllRows (Function &function) |
This method calls sequentialForRows for all matrix rows. | |
template<typename Function > | |
void | sequentialForAllRows (Function &function) const |
This method calls sequentialForRows for all matrix rows (for constant instances). | |
template<typename Function > | |
void | sequentialForRows (IndexType begin, IndexType end, Function &function) |
Method for sequential iteration over all matrix rows for non-constant instances. | |
template<typename Function > | |
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. | |
template<typename InVector , typename OutVector > | |
void | vectorProduct (const InVector &inVector, OutVector &outVector, RealType matrixMultiplicator=1.0, RealType outVectorMultiplicator=0.0, IndexType begin=0, IndexType end=0) const |
Computes product of matrix and vector. | |
Public Member Functions inherited from TNL::Matrices::MatrixBase< Real, Devices::Host, int, GeneralMatrix, Algorithms::Segments::RowMajorOrder > | |
__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 |
Static Public Member Functions | |
static std::string | getSerializationType () |
Returns string with serialization type. | |
static constexpr bool | isBinary () |
Test of binary matrix type. | |
static constexpr bool | isSymmetric () |
Test of symmetric matrix type. | |
Static Public Member Functions inherited from TNL::Matrices::MatrixBase< Real, Devices::Host, int, GeneralMatrix, Algorithms::Segments::RowMajorOrder > | |
static constexpr ElementsOrganization | getOrganization () |
Matrix elements organization getter. | |
static constexpr bool | isBinary () |
Test of binary matrix type. | |
static constexpr bool | isSymmetric () |
Test of symmetric matrix type. | |
Protected Attributes | |
ColumnsIndexesViewType | columnIndexes |
RowPointersView | rowPointers |
Protected Attributes inherited from TNL::Matrices::MatrixBase< Real, Devices::Host, int, GeneralMatrix, Algorithms::Segments::RowMajorOrder > | |
IndexType | columns |
IndexType | rows |
ValuesViewType | values |
Additional Inherited Members | |
Protected Member Functions inherited from TNL::Matrices::MatrixBase< Real, Devices::Host, int, GeneralMatrix, Algorithms::Segments::RowMajorOrder > | |
__cuda_callable__ void | bind (IndexType rows, IndexType columns, ValuesViewType values) |
Re-initializes the internal attributes of the base class. | |
Implementation of sparse sandbox matrix view.
It serves as an accessor to SparseSandboxMatrix for example when passing the matrix to lambda functions. SparseSandboxMatrix view can be also created in CUDA kernels.
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 bu the user, of course. |
using TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::ColumnsIndexesViewType |
using TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::RowPointersView |
Type of container view for CSR row pointers.
SANDBOX_TODO: You may replace it with containers views for metadata of your format.
using TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::ViewType = SparseSandboxMatrixView< Real, Device, Index, MatrixType > |
Templated type of segments view, i.e. sparse matrix format.
Type of segments view used by this matrix. It represents the sparse matrix format.
Type of related matrix view.
__cuda_callable__ TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::SparseSandboxMatrixView | ( | IndexType | rows, |
IndexType | columns, | ||
const ValuesViewType & | values, | ||
const ColumnsIndexesViewType & | columnIndexes, | ||
const RowPointersView & | rowPointers ) |
Constructor with all necessary data and views.
rows | is a number of matrix rows. |
columns | is a number of matrix columns. |
values | is a vector view with matrix elements values. |
columnIndexes | is a vector view with matrix elements column indexes. |
rowPointers | is a container view with row pointers. |
SANDBOX_TODO: Replace rowPointers
with metadata by your needs.
|
default |
Copy constructor.
matrix | is an input sparse matrix view. |
|
defaultnoexcept |
Move constructor.
matrix | is an input sparse matrix view. |
__cuda_callable__ void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::addElement | ( | IndexType | row, |
IndexType | column, | ||
const RealType & | value, | ||
const RealType & | thisElementMultiplicator = 1.0 ) |
Add element at given row and column to given value.
This method can be called from the host system (CPU) no matter where the matrix is allocated. If the matrix is allocated on GPU this method can be called even from device kernels. If the matrix is allocated in GPU device this method is called from CPU, it transfers values of each matrix element separately and so the performance is very low. For higher performance see. SparseSandboxMatrix::getRow or SparseSandboxMatrix::forElements and SparseSandboxMatrix::forAllElements. The call may fail if the matrix row capacity is exhausted.
row | is row index of the element. |
column | is columns index of the element. |
value | is the value the element will be set to. |
thisElementMultiplicator | is multiplicator the original matrix element value is multiplied by before addition of given value. |
__cuda_callable__ void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::bind | ( | SparseSandboxMatrixView< Real, Device, Index, MatrixType > && | view | ) |
Method for rebinding (reinitialization) using another matrix view.
view | The matrix view to be bound. |
__cuda_callable__ void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::bind | ( | SparseSandboxMatrixView< Real, Device, Index, MatrixType > & | view | ) |
Method for rebinding (reinitialization) using another matrix view.
view | The matrix view to be bound. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::forAllElements | ( | Function & | function | ) |
This method calls forElements for all matrix rows.
See SparseSandboxMatrix::forElements.
Function | is a type of lambda function that will operate on matrix elements. |
function | is an instance of the lambda function to be called in each row. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::forAllElements | ( | Function & | function | ) | const |
This method calls forElements for all matrix rows (for constant instances).
See SparseSandboxMatrix::forElements.
Function | is a type of lambda function that will operate on matrix elements. |
function | is an instance of the lambda function to be called in each row. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::forAllRows | ( | Function && | function | ) |
Method for parallel iteration over all matrix rows.
In each row, given lambda function is performed. Each row is processed by at most one thread unlike the method SparseSandboxMatrixView::forAllElements where more than one thread can be mapped to each row.
Function | is type of the lambda function. |
function | is an instance of the lambda function to be called for each row. |
RowView represents matrix row - see RowView.
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::forAllRows | ( | Function && | function | ) | const |
Method for parallel iteration over all matrix rows for constant instances.
In each row, given lambda function is performed. Each row is processed by at most one thread unlike the method SparseSandboxMatrixView::forAllElements where more than one thread can be mapped to each row.
Function | is type of the lambda function. |
function | is an instance of the lambda function to be called for each row. |
ConstRowView represents matrix row - see ConstRowView.
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::forElements | ( | IndexType | begin, |
IndexType | end, | ||
Function & | function ) |
Method for iteration over all matrix rows for non-constant instances.
Function | is type of lambda function that will operate on matrix elements. It should have form like function( IndexType rowIdx, IndexType localIdx, IndexType columnIdx, RealType& value ) . The localIdx parameter is a rank of the non-zero element in given row. |
begin | defines beginning of the range [begin,end) of rows to be processed. |
end | defines ending of the range [begin,end) of rows to be processed. |
function | is an instance of the lambda function to be called in each row. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::forElements | ( | IndexType | begin, |
IndexType | end, | ||
Function & | function ) const |
Method for iteration over all matrix rows for constant instances.
Function | is type of lambda function that will operate on matrix elements. It should have form like function( IndexType rowIdx, IndexType localIdx, IndexType columnIdx, const RealType& value ) . The localIdx parameter is a rank of the non-zero element in given row. |
begin | defines beginning of the range [begin,end) of rows to be processed. |
end | defines ending of the range [begin,end) of rows to be processed. |
function | is an instance of the lambda function to be called in each row. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::forRows | ( | IndexType | begin, |
IndexType | end, | ||
Function && | function ) |
Method for parallel iteration over matrix rows from interval [begin, end)
.
In each row, given lambda function is performed. Each row is processed by at most one thread unlike the method SparseSandboxMatrixView::forElements where more than one thread can be mapped to each row.
Function | is type of the lambda function. |
begin | defines beginning of the range [begin, end) of rows to be processed. |
end | defines ending of the range [begin, end) of rows to be processed. |
function | is an instance of the lambda function to be called for each row. |
RowView represents matrix row - see RowView.
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::forRows | ( | IndexType | begin, |
IndexType | end, | ||
Function && | function ) const |
Method for parallel iteration over matrix rows from interval [begin, end)
for constant instances.
In each row, given lambda function is performed. Each row is processed by at most one thread unlike the method SparseSandboxMatrixView::forElements where more than one thread can be mapped to each row.
Function | is type of the lambda function. |
begin | defines beginning of the range [begin, end) of rows to be processed. |
end | defines ending of the range [begin, end) of rows to be processed. |
function | is an instance of the lambda function to be called for each row. |
ConstRowView represents matrix row - see ConstRowView.
|
nodiscard |
Getter of column indexes for nonconstant instances.
|
nodiscard |
Getter of segments for non-constant instances.
Segments are a structure for addressing the matrix elements columns and values. In fact, Segments represent the sparse matrix format.
Getter of segments for constant instances.
Segments are a structure for addressing the matrix elements columns and values. In fact, Segments represent the sparse matrix format.
Getter of column indexes for constant instances.
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::getCompressedRowLengths | ( | Vector & | rowLengths | ) | const |
Computes number of non-zeros in each row.
rowLengths | is a vector into which the number of non-zeros in each row will be stored. |
|
nodiscard |
Returns a non-modifiable view of the sparse matrix.
|
nodiscard |
Returns value of matrix element at position given by its row and column index.
This method can be called from the host system (CPU) no matter where the matrix is allocated. If the matrix is allocated on GPU this method can be called even from device kernels. If the matrix is allocated in GPU device this method is called from CPU, it transfers values of each matrix element separately and so the performance is very low. For higher performance see. SparseSandboxMatrix::getRow or SparseSandboxMatrix::forElements and SparseSandboxMatrix::forAllElements.
row | is a row index of the matrix element. |
column | i a column index of the matrix element. |
|
nodiscardoverridevirtual |
Returns number of non-zero matrix elements.
This method really counts the non-zero matrix elements and so it returns zero for matrix having all allocated elements set to zero.
Reimplemented from TNL::Matrices::MatrixBase< Real, Devices::Host, int, GeneralMatrix, Algorithms::Segments::RowMajorOrder >.
|
nodiscard |
Non-constant getter of simple structure for accessing given matrix row.
rowIdx | is matrix row index. |
|
nodiscard |
Constant getter of simple structure for accessing given matrix row.
rowIdx | is matrix row index. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::getRowCapacities | ( | Vector & | rowCapacities | ) | const |
Compute capacities of all rows.
The row capacities are not stored explicitly and must be computed.
rowCapacities | is a vector where the row capacities will be stored. |
|
nodiscard |
Returns capacity of given matrix row.
row | index of matrix row. |
|
staticnodiscard |
Returns string with serialization type.
The string has a form Matrices::SparseSandboxMatrix< RealType, [any_device], IndexType, General/Symmetric, Format, [any_allocator] >
.
|
nodiscard |
Returns string with serialization type.
See SparseSandboxMatrix::getSerializationType.
|
nodiscard |
Returns a modifiable view of the sparse matrix.
|
inlinestaticconstexpr |
Test of binary matrix type.
|
inlinestaticconstexpr |
Test of symmetric matrix type.
|
nodiscard |
Comparison operator with another arbitrary matrix type.
matrix | is the right-hand side matrix. |
|
delete |
Copy-assignment operator.
It is a deleted function, because matrix assignment in general requires reallocation.
|
nodiscard |
Comparison operator with another arbitrary matrix type.
matrix | is the right-hand side matrix. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::print | ( | std::ostream & | str | ) | const |
Method for printing the matrix to output stream.
str | is the output stream. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::reduceAllRows | ( | Fetch && | fetch, |
const Reduce & | reduce, | ||
Keep && | keep, | ||
const FetchReal & | zero ) const |
Method for performing general reduction on all matrix rows for constant instances.
Fetch | is a type of lambda function for data fetch declared as fetch( IndexType rowIdx, IndexType& columnIdx, RealType& elementValue ) -> FetchValue . The return type of this lambda can be any non void. |
Reduce | is a type of lambda function for reduction declared as reduce( const FetchValue& v1, const FetchValue& v2 ) -> FetchValue . |
Keep | is a type of lambda function for storing results of reduction in each row. It is declared as keep( const IndexType rowIdx, const double& value ) . |
FetchValue | is type returned by the Fetch lambda function. |
fetch | is an instance of lambda function for data fetch. |
reduce | is an instance of lambda function for reduction. |
keep | in an instance of lambda function for storing results. |
zero | is the identity element of given reduction operation. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::reduceRows | ( | IndexType | begin, |
IndexType | end, | ||
Fetch && | fetch, | ||
const Reduce & | reduce, | ||
Keep && | keep, | ||
const FetchReal & | zero ) const |
Method for performing general reduction on matrix rows for constant instances.
Fetch | is a type of lambda function for data fetch declared as fetch( IndexType rowIdx, IndexType& columnIdx, RealType& elementValue ) -> FetchValue . The return type of this lambda can be any non void. |
Reduce | is a type of lambda function for reduction declared as reduce( const FetchValue& v1, const FetchValue& v2 ) -> FetchValue . |
Keep | is a type of lambda function for storing results of reduction in each row. It is declared as keep( const IndexType rowIdx, const double& value ) . |
FetchValue | is type returned by the Fetch lambda function. |
begin | defines beginning of the range [begin, end) of rows to be processed. |
end | defines ending of the range [begin, end) of rows to be processed. |
fetch | is an instance of lambda function for data fetch. |
reduce | is an instance of lambda function for reduction. |
keep | in an instance of lambda function for storing results. |
zero | is the identity element of given reduction operation. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::sequentialForAllRows | ( | Function & | function | ) |
This method calls sequentialForRows for all matrix rows.
See SparseSandboxMatrixView::sequentialForAllRows.
Function | is a type of lambda function that will operate on matrix elements. |
function | is an instance of the lambda function to be called in each row. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::sequentialForAllRows | ( | Function & | function | ) | const |
This method calls sequentialForRows for all matrix rows (for constant instances).
See SparseSandboxMatrixView::sequentialForRows.
Function | is a type of lambda function that will operate on matrix elements. |
function | is an instance of the lambda function to be called in each row. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::sequentialForRows | ( | IndexType | begin, |
IndexType | end, | ||
Function & | function ) |
Method for sequential iteration over all matrix rows for non-constant instances.
Function | is type of lambda function that will operate on matrix elements. It should have form like function( IndexType rowIdx, IndexType columnIdx, IndexType columnIdx_, RealType& value ) . The column index repeats twice only for compatibility with sparse matrices. |
begin | defines beginning of the range [begin,end) of rows to be processed. |
end | defines ending of the range [begin,end) of rows to be processed. |
function | is an instance of the lambda function to be called in each row. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::sequentialForRows | ( | IndexType | begin, |
IndexType | end, | ||
Function & | function ) const |
Method for sequential iteration over all matrix rows for constant instances.
Function | is type of lambda function that will operate on matrix elements. It should have form like function( IndexType rowIdx, IndexType columnIdx, IndexType columnIdx_, const RealType& value ) . The column index repeats twice only for compatibility with sparse matrices. |
begin | defines beginning of the range [begin,end) of rows to be processed. |
end | defines ending of the range [begin,end) of rows to be processed. |
function | is an instance of the lambda function to be called in each row. |
__cuda_callable__ void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::setElement | ( | IndexType | row, |
IndexType | column, | ||
const RealType & | value ) |
Sets element at given row and column to given value.
This method can be called from the host system (CPU) no matter where the matrix is allocated. If the matrix is allocated on GPU this method can be called even from device kernels. If the matrix is allocated in GPU device this method is called from CPU, it transfers values of each matrix element separately and so the performance is very low. For higher performance see. SparseSandboxMatrix::getRow or SparseSandboxMatrix::forElements and SparseSandboxMatrix::forAllElements. The call may fail if the matrix row capacity is exhausted.
row | is row index of the element. |
column | is columns index of the element. |
value | is the value the element will be set to. |
void TNL::Matrices::Sandbox::SparseSandboxMatrixView< Real, Device, Index, MatrixType >::vectorProduct | ( | const InVector & | inVector, |
OutVector & | outVector, | ||
RealType | matrixMultiplicator = 1.0, | ||
RealType | outVectorMultiplicator = 0.0, | ||
IndexType | begin = 0, | ||
IndexType | end = 0 ) const |
Computes product of matrix and vector.
More precisely, it computes:
outVector = matrixMultiplicator * ( * this ) * inVector + outVectorMultiplicator * outVector
InVector | is type of input vector. It can be TNL::Containers::Vector, TNL::Containers::VectorView, TNL::Containers::Array, TNL::Containers::ArrayView, or similar container. |
OutVector | is type of output vector. It can be TNL::Containers::Vector, TNL::Containers::VectorView, TNL::Containers::Array, TNL::Containers::ArrayView, or similar container. |
inVector | is input vector. |
outVector | is output vector. |
matrixMultiplicator | is a factor by which the matrix is multiplied. It is one by default. |
outVectorMultiplicator | is a factor by which the outVector is multiplied before added to the result of matrix-vector product. It is zero by default. |
begin | is the beginning of the rows range for which the vector product is computed. It is zero by default. |
end | is the end of the rows range for which the vector product is computed. It is number if the matrix rows by default. |