Workspace for extracting data from a CustomDenseChunkedMatrixManager
.
More...
#include <CustomDenseChunkedMatrix.hpp>
|
virtual void | extract (Index_ chunk_row_id, Index_ chunk_column_id, bool row, Index_ target_start, Index_ target_length, Index_ non_target_start, Index_ non_target_length, ChunkValue_ *output, Index_ stride)=0 |
|
virtual void | extract (Index_ chunk_row_id, Index_ chunk_column_id, bool row, Index_ target_start, Index_ target_length, const std::vector< Index_ > &non_target_indices, ChunkValue_ *output, Index_ stride)=0 |
|
virtual void | extract (Index_ chunk_row_id, Index_ chunk_column_id, bool row, const std::vector< Index_ > &target_indices, Index_ non_target_start, Index_ non_target_length, ChunkValue_ *output, Index_ stride)=0 |
|
virtual void | extract (Index_ chunk_row_id, Index_ chunk_column_id, bool row, const std::vector< Index_ > &target_indices, const std::vector< Index_ > &non_target_indices, ChunkValue_ *output, Index_ stride)=0 |
|
template<typename ChunkValue_, typename Index_>
class tatami_chunked::CustomDenseChunkedMatrixWorkspace< ChunkValue_, Index_ >
Workspace for extracting data from a CustomDenseChunkedMatrixManager
.
- Template Parameters
-
ChunkValue_ | Numeric type of the data values in each chunk. |
Index_ | Integer type of the row/column indices of the CustomDenseChunkedMatrix . |
◆ extract() [1/4]
template<typename ChunkValue_ , typename Index_ >
virtual void tatami_chunked::CustomDenseChunkedMatrixWorkspace< ChunkValue_, Index_ >::extract |
( |
Index_ | chunk_row_id, |
|
|
Index_ | chunk_column_id, |
|
|
bool | row, |
|
|
Index_ | target_start, |
|
|
Index_ | target_length, |
|
|
Index_ | non_target_start, |
|
|
Index_ | non_target_length, |
|
|
ChunkValue_ * | output, |
|
|
Index_ | stride ) |
|
pure virtual |
- Parameters
-
| chunk_row_id | Row of the chunk grid containing the chunk of interest. This considers the grid of chunks that is obtained by partitioning each dimension of the matrix. |
| chunk_column_id | Column of the chunk grid containing the chunk of interest. This considers the grid of chunks that is obtained by partitioning each dimension of the matrix. |
| row | Whether to extract rows from the chunk, i.e., the rows are the target dimension. |
| target_start | Index of the first element on the target dimension to be extracted. If row = true , this is the first row, otherwise it is the first column. |
| target_length | Number of elements on the target dimension to be extracted. If row = true , this is the number of rows, otherwise it is the number of columns. This is guaranteed to be positive. |
| non_target_start | Index of the start of the continguous block of the non-target dimension to be extracted. If row = true , this is the first column, otherwise it is the first row. |
| non_target_length | Length of the contiguous block of the non-target dimension to be extracted. If row = true , this is the number of columns, otherwise it is the number of rows. This is guaranteed to be positive. |
[out] | output | Pointer to an output array of length no less than stride * P , where P is the number of rows (if row = true ) or columns (otherwise) in this chunk. |
| stride | Distance between corresponding values from adjacent elements of the target dimension when they are being stored in output . This is guaranteed to be greater than or equal to non_target_length . |
Given a chunk of interest, this method extracts a contiguous block of rows/columns. If row = true
, we consider a block of rows [target_start, target_start + target_length) * and a block of columns
[non_target_start, non_target_start + non_target_length); conversely, if
row = false, we would consider a block of target columns and a block of non-target rows. For a target dimension index
pand non-target dimension index
non_target_start + q, the value from the chunk should be stored in
output[p * stride + q]`.
- The
stride
allows interleaving of multiple chunks into a single array where values from the same target dimension element are contiguous. This enables easier fetching in the CustomDenseChunkedMatrix
.
p
should lie in [target_start, target_start + target_length)
, whereas q
should lie in [0, non_target_length)
. This difference is deliberate and enables easy extraction of the target dimension element of interest.
◆ extract() [2/4]
template<typename ChunkValue_ , typename Index_ >
virtual void tatami_chunked::CustomDenseChunkedMatrixWorkspace< ChunkValue_, Index_ >::extract |
( |
Index_ | chunk_row_id, |
|
|
Index_ | chunk_column_id, |
|
|
bool | row, |
|
|
Index_ | target_start, |
|
|
Index_ | target_length, |
|
|
const std::vector< Index_ > & | non_target_indices, |
|
|
ChunkValue_ * | output, |
|
|
Index_ | stride ) |
|
pure virtual |
- Parameters
-
| chunk_row_id | Row of the chunk grid containing the chunk of interest. This considers the grid of chunks that is obtained by partitioning each dimension of the matrix. |
| chunk_column_id | Column of the chunk grid containing the chunk of interest. This considers the grid of chunks that is obtained by partitioning each dimension of the matrix. |
| row | Whether to extract rows from the chunk, i.e., the rows are the target dimension. |
| target_start | Index of the first element on the target dimension to be extracted. If row = true , this is the first row, otherwise it is the first column. |
| target_length | Number of elements on the target dimension to be extracted. If row = true , this is the number of rows, otherwise it is the number of columns. This is guaranteed to be positive. |
| non_target_indices | Indexed subset of the non-target dimension to be extracted. If row = true , these are column indices, otherwise these are row indices. This is guaranteed to be non-empty with unique and sorted indices. |
[out] | output | Pointer to an output array of length no less than stride * P , where P is the number of rows (if row = true ) or columns (otherwise) in this chunk. |
| stride | Distance between corresponding values from consecutive target dimension elements when stored in output . This is guaranteed to be greater than or equal to non_target_indices.size() . |
Given a chunk of interest, this method extracts a contiguous block along the target dimension and an indexed subset along the non-target dimension. If row = true
, we consider a block of rows [target_start, target_start + target_length)
and a subset of columns non_target_indices
; conversely, if row = false
, we would extract data for all columns and a subset of rows. For a target dimension index p
and non-target dimension index non_target_indices[q]
, the value from the chunk should be stored in output[p * stride + q]
.
- The
stride
allows interleaving of multiple chunks into a single array where values from the same target dimension element are contiguous. This enables easier fetching in the CustomDenseChunkedMatrix
.
p
should lie in [target_start, target_start + target_length)
, whereas q
should lie in [0, non_target_indices.size())
. This difference is deliberate and enables easy extraction of the target dimension element of interest.
◆ extract() [3/4]
template<typename ChunkValue_ , typename Index_ >
virtual void tatami_chunked::CustomDenseChunkedMatrixWorkspace< ChunkValue_, Index_ >::extract |
( |
Index_ | chunk_row_id, |
|
|
Index_ | chunk_column_id, |
|
|
bool | row, |
|
|
const std::vector< Index_ > & | target_indices, |
|
|
Index_ | non_target_start, |
|
|
Index_ | non_target_length, |
|
|
ChunkValue_ * | output, |
|
|
Index_ | stride ) |
|
pure virtual |
- Parameters
-
| chunk_row_id | Row of the chunk grid containing the chunk of interest. This considers the grid of chunks that is obtained by partitioning each dimension of the matrix. |
| chunk_column_id | Column of the chunk grid containing the chunk of interest. This considers the grid of chunks that is obtained by partitioning each dimension of the matrix. |
| row | Whether to extract rows from the chunk, i.e., the rows are the target dimension. |
| target_indices | Indices of the elements of the target dimension to be extracted. If row = true , these are row indices, otherwise these are column indices. |
| non_target_start | Index of the start of the contiguous block of the non-target dimension to be extracted. If row = true , this is the first column, otherwise it is the first row. |
| non_target_length | Length of the contiguous block of the non-target dimension to be extracted. If row = true , this is the number of columns, otherwise it is the number of rows. This is guaranteed to be positive. |
[out] | output | Pointer to an output array of length no less than stride * target_length + non_target_length . |
| stride | Distance between corresponding values from consecutive target dimension elements when stored in output . This is guaranteed to be greater than or equal to non_target_length . |
Given a chunk of interest, this method extracts an indexed subset along the target dimension and a contiguous block along the non-target dimension. If row = true
, we consider a subset of rows target_indices
and a block of columns [non_target_start, non_target_start + non_target_length)
; conversely, if row = false
, we would extract a block of columns as the target and the block of rows as the non_target. For a target dimension index p
and non-target dimension index non_target_start + q
, the value from the chunk should be stored in output[p * stride + q]
.
- The
stride
allows interleaving of multiple chunks into a single array where values from the same target dimension element are contiguous. This enables easier fetching in the CustomDenseChunkedMatrix
.
p
should be a value in target_indices
, whereas q
should lie in [0, non_target_length)
. This difference is deliberate and enables easy extraction of the target dimension element of interest.
◆ extract() [4/4]
template<typename ChunkValue_ , typename Index_ >
virtual void tatami_chunked::CustomDenseChunkedMatrixWorkspace< ChunkValue_, Index_ >::extract |
( |
Index_ | chunk_row_id, |
|
|
Index_ | chunk_column_id, |
|
|
bool | row, |
|
|
const std::vector< Index_ > & | target_indices, |
|
|
const std::vector< Index_ > & | non_target_indices, |
|
|
ChunkValue_ * | output, |
|
|
Index_ | stride ) |
|
pure virtual |
- Parameters
-
| chunk_row_id | Row of the chunk grid containing the chunk of interest. This considers the grid of chunks that is obtained by partitioning each dimension of the matrix. |
| chunk_column_id | Column of the chunk grid containing the chunk of interest. This considers the grid of chunks that is obtained by partitioning each dimension of the matrix. |
| row | Whether to extract rows from the chunk, i.e., the rows are the target dimension. |
| target_indices | Indices of the elements on the target dimension to be extracted. If row = true , these are row indices, otherwise these are column indices. This is guaranteed to be non-empty with unique and sorted indices. |
| non_target_indices | Indices of the elements on the non-target dimension to be extracted. If row = true , these are column indices, otherwise these are row indices. This is guaranteed to be non-empty with unique and sorted indices. |
[out] | output | Pointer to an output array of length no less than stride * (target_indices.back() + 1) . |
| stride | Distance between corresponding values from consecutive target dimension elements when stored in output . This is guaranteed to be greater than or equal to non_target_indices.size() . |
Given a chunk of interest, this method extracts data for an indexed subset of rows/columns. If row = true
, we would extract a subset of rows in target_indices
and a subset columns in non_target_indices
. conversely, if row = false
, we would consider a subset of target columns and a subset of non-target rows. For a target dimension index p
and non-target dimension index non_target_indices[q]
, the value from the chunk should be stored in output[p * stride + q]
.
- The
stride
allows interleaving of multiple chunks into a single array where values from the same target dimension element are contiguous. This enables easier fetching in the CustomDenseChunkedMatrix
.
p
should be a value in target_indices
whereas q
should lie in [0, non_target_indices.size())
. This difference is deliberate and enables easy extraction of the target dimension element of interest.
The documentation for this class was generated from the following file: