Template Numerical Library version\ main:4e58ea6
|
Implementation of dense matrix view. More...
#include <TNL/Matrices/DenseMatrixBase.h>
Public Types | |
using | ConstRowView = typename RowView::ConstRowView |
Type for accessing immutable matrix row. | |
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 | RowView = DenseMatrixRowView< SegmentViewType, typename Base::ValuesViewType > |
Type for accessing matrix row. | |
Public Types inherited from TNL::Matrices::MatrixBase< Real, Device, Index, GeneralMatrix, Organization > | |
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__ | DenseMatrixBase ()=default |
Constructor without parameters. | |
__cuda_callable__ | DenseMatrixBase (const DenseMatrixBase &matrix)=default |
Copy constructor. | |
__cuda_callable__ | DenseMatrixBase (DenseMatrixBase &&matrix) noexcept=default |
Move constructor. | |
__cuda_callable__ | DenseMatrixBase (IndexType rows, IndexType columns, typename Base::ValuesViewType values) |
Constructor with matrix dimensions and values. | |
__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. | |
template<typename Matrix > | |
void | addMatrix (const Matrix &matrix, const RealType &matrixMultiplicator=1.0, const RealType &thisMatrixMultiplicator=1.0, TransposeState transpose=TransposeState::None) |
Computes matrix addition. | |
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. | |
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. | |
template<typename Vector > | |
void | getCompressedRowLengths (Vector &rowLengths) const |
Computes number of non-zeros in each row. | |
__cuda_callable__ Real | getElement (IndexType row, IndexType column) const |
Returns value of matrix element at position given by its row and column index. | |
__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. | |
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. | |
template<typename Real_ , typename Device_ , typename Index_ > | |
bool | operator!= (const DenseMatrixBase< Real_, Device_, Index_, Organization > &matrix) const |
Comparison operator with another dense matrix view. | |
__cuda_callable__ Real & | operator() (IndexType row, IndexType column) |
Returns non-constant reference to element at row row and column column. | |
__cuda_callable__ const Real & | operator() (IndexType row, IndexType column) const |
Returns constant reference to element at row row and column column. | |
DenseMatrixBase & | operator= (const DenseMatrixBase &)=delete |
Copy-assignment operator. | |
DenseMatrixBase & | operator= (DenseMatrixBase &&)=delete |
Move-assignment operator. | |
template<typename Real_ , typename Device_ , typename Index_ > | |
bool | operator== (const DenseMatrixBase< Real_, Device_, Index_, Organization > &matrix) const |
Comparison operator with another dense matrix view. | |
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 &identity) 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 &identity) 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 &identity) 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. | |
void | setValue (const RealType &v) |
Sets all matrix elements to value v. | |
template<typename InVector , typename OutVector > | |
void | vectorProduct (const InVector &inVector, OutVector &outVector, const RealType &matrixMultiplicator=1.0, const 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, Device, Index, GeneralMatrix, Organization > | |
__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. | |
virtual IndexType | getNonzeroElementsCount () const |
Computes a current number of nonzero matrix elements. | |
__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 Public Member Functions inherited from TNL::Matrices::MatrixBase< Real, Device, Index, GeneralMatrix, Organization > | |
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 Types | |
using | Base = MatrixBase< Real, Device, Index, GeneralMatrix, Organization > |
using | SegmentsReductionKernel = Algorithms::SegmentsReductionKernels::EllpackKernel< Index, Device > |
using | SegmentsType |
using | SegmentsViewType = typename SegmentsType::ViewType |
using | SegmentViewType = typename SegmentsType::SegmentViewType |
Protected Member Functions | |
__cuda_callable__ void | bind (IndexType rows, IndexType columns, typename Base::ValuesViewType values, SegmentsViewType segments) |
Re-initializes the internal attributes of the base class. | |
__cuda_callable__ IndexType | getElementIndex (IndexType row, IndexType column) const |
Protected Member Functions inherited from TNL::Matrices::MatrixBase< Real, Device, Index, GeneralMatrix, Organization > | |
__cuda_callable__ void | bind (IndexType rows, IndexType columns, ValuesViewType values) |
Re-initializes the internal attributes of the base class. | |
Protected Attributes | |
SegmentsViewType | segments |
Protected Attributes inherited from TNL::Matrices::MatrixBase< Real, Device, Index, GeneralMatrix, Organization > | |
IndexType | columns |
IndexType | rows |
ValuesViewType | values |
Implementation of dense matrix view.
It serves as an accessor to DenseMatrix for example when passing the matrix to lambda functions. DenseMatrix view can be also created in CUDA kernels.
Real | is a type of matrix elements. |
Device | is a device where the matrix is allocated. |
Index | is a type for indexing of the matrix elements. |
MatrixElementsOrganization | tells the ordering of matrix elements in memory. It is either TNL::Algorithms::Segments::RowMajorOrder or TNL::Algorithms::Segments::ColumnMajorOrder. |
See DenseMatrix.
|
protected |
__cuda_callable__ TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::DenseMatrixBase | ( | IndexType | rows, |
IndexType | columns, | ||
typename Base::ValuesViewType | values ) |
Constructor with matrix dimensions and values.
rows | number of matrix rows. |
columns | number of matrix columns. |
values | is vector view with matrix elements values. |
|
default |
Copy constructor.
matrix | is the source matrix view. |
|
defaultnoexcept |
Move constructor.
matrix | is the source matrix view. |
__cuda_callable__ void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::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. DenseMatrix::getRow or DenseMatrix::forElements and DenseMatrix::forAllElements.
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. |
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::addMatrix | ( | const Matrix & | matrix, |
const RealType & | matrixMultiplicator = 1.0, | ||
const RealType & | thisMatrixMultiplicator = 1.0, | ||
TransposeState | transpose = TransposeState::None ) |
Computes matrix addition.
Matrix | is type of the matrix to be added. It can be DenseMatrix or DenseMatrixView. |
matrix | is the matrix to be added. |
matrixMultiplicator | is a factor by which the matrix is multiplied. It is one by default. |
thisMatrixMultiplicator | is a factor by which this matrix is multiplied. It is one by default. |
transpose | indicates if the matrix is added as transposed. It is None by default. |
|
protected |
Re-initializes the internal attributes of the base class.
Note that this function is protected to ensure that the user cannot modify the base class of a matrix. For the same reason, in future code development we also need to make sure that all non-const functions in the base class return by value and not by reference.
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::forAllElements | ( | Function && | function | ) |
This method calls forElements for all matrix rows.
See DenseMatrix::forAllElements.
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::DenseMatrixBase< Real, Device, Index, Organization >::forAllElements | ( | Function && | function | ) | const |
This method calls forElements for all matrix rows.
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::DenseMatrixBase< Real, Device, Index, Organization >::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 DenseMatrixBase::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 TNL::Matrices::DenseMatrixBase::RowView.
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::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 DenseMatrixBase::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 TNL::Matrices::DenseMatrixBase::ConstRowView.
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::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 |
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::DenseMatrixBase< Real, Device, Index, Organization >::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 |
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::DenseMatrixBase< Real, Device, Index, Organization >::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 DenseMatrix::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 TNL::Matrices::DenseMatrix::RowView.
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::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 DenseMatrixBase::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 TNL::Matrices::DenseMatrixBase::ConstRowView.
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::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 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. DenseMatrix::getRow or DenseMatrix::forElements and DenseMatrix::forAllElements.
row | is a row index of the matrix element. |
column | i a column index of the matrix element. |
|
nodiscard |
Non-constant getter of simple structure for accessing given matrix row.
rowIdx | is matrix row index. |
See DenseMatrixRowView.
|
nodiscard |
Constant getter of simple structure for accessing given matrix row.
rowIdx | is matrix row index. |
See DenseMatrixRowView.
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::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 `MatricesDenseMatrix< RealType, [any_device], IndexType, [any_allocator], true/false >`.
|
nodiscard |
Comparison operator with another dense matrix view.
matrix | is the right-hand side matrix. |
|
nodiscard |
Returns non-constant reference to element at row row and column column.
Since this method returns reference to the element, it cannot be called across different address spaces. It means that it can be called only form CPU if the matrix is allocated on CPU or only from GPU kernels if the matrix is allocated on GPU.
row | is a row index of the element. |
column | is a columns index of the element. |
|
nodiscard |
Returns constant reference to element at row row and column column.
Since this method returns reference to the element, it cannot be called across different address spaces. It means that it can be called only form CPU if the matrix is allocated on CPU or only from GPU kernels if the matrix is allocated on GPU.
row | is a row index of the element. |
column | is a columns index of the element. |
|
delete |
Copy-assignment operator.
It is a deleted function, because matrix assignment in general requires reallocation.
|
nodiscard |
Comparison operator with another dense matrix view.
matrix | is the right-hand side matrix view. |
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::print | ( | std::ostream & | str | ) | const |
Method for printing the matrix to output stream.
str | is the output stream. |
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::reduceAllRows | ( | Fetch && | fetch, |
const Reduce & | reduce, | ||
Keep && | keep, | ||
const FetchReal & | identity ) 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 |
The return type of this lambda can be any non void.
Reduce | is a type of lambda function for reduction declared as |
Keep | is a type of lambda function for storing results of reduction in each row. It is declared as |
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. |
identity | is the identity element for the reduction operation, i.e. element which does not change the result of the reduction. |
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::reduceRows | ( | IndexType | begin, |
IndexType | end, | ||
Fetch && | fetch, | ||
const Reduce & | reduce, | ||
Keep && | keep, | ||
const FetchReal & | identity ) const |
Method for performing general reduction on matrix rows for constant instances.
Fetch | is a type of lambda function for data fetch declared as |
The return type of this lambda can be any non void.
Reduce | is a type of lambda function for reduction declared as |
Keep | is a type of lambda function for storing results of reduction in each row. It is declared as |
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. |
identity | is the identity element for the reduction operation, i.e. element which does not change the result of the reduction. |
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::sequentialForAllRows | ( | Function && | function | ) |
This method calls sequentialForRows for all matrix rows.
See DenseMatrixBase::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::DenseMatrixBase< Real, Device, Index, Organization >::sequentialForAllRows | ( | Function && | function | ) | const |
This method calls sequentialForRows for all matrix rows (for constant instances).
See DenseMatrixBase::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::DenseMatrixBase< Real, Device, Index, Organization >::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 |
RowView represents matrix row - see TNL::Matrices::DenseMatrixBase::RowView.
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::DenseMatrixBase< Real, Device, Index, Organization >::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 |
ConstRowView represents matrix row - see TNL::Matrices::DenseMatrixBase::ConstRowView.
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::DenseMatrixBase< Real, Device, Index, Organization >::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. DenseMatrix::getRow or DenseMatrix::forElements and DenseMatrix::forAllElements.
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::DenseMatrixBase< Real, Device, Index, Organization >::setValue | ( | const RealType & | v | ) |
Sets all matrix elements to value v.
v | is value all matrix elements will be set to. |
void TNL::Matrices::DenseMatrixBase< Real, Device, Index, Organization >::vectorProduct | ( | const InVector & | inVector, |
OutVector & | outVector, | ||
const RealType & | matrixMultiplicator = 1.0, | ||
const RealType & | outVectorMultiplicator = 0.0, | ||
IndexType | begin = 0, | ||
IndexType | end = 0 ) const |
Computes product of matrix and vector.
More precisely, it computes:
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. |
Note that the ouput vector dimension must be the same as the number of matrix rows no matter how we set begin
and end
parameters. These parameters just say that some matrix rows and the output vector elements are omitted.