6#ifndef _poplibs_popsparse_SparseStorageFormats_hpp_
7#define _poplibs_popsparse_SparseStorageFormats_hpp_
15 std::size_t getNumColumnsInBlock()
const {
return blockDimensions[1]; }
17 std::size_t getNumRowsInBlock()
const {
18 return blockDimensions[0];
22 std::size_t getBlockSize()
const {
23 return blockDimensions[0] * blockDimensions[1];
27 std::array<std::size_t, 2> getBlockDimensions()
const {
28 return blockDimensions;
32 std::array<std::size_t, 2> blockDimensions;
51 const std::array<std::size_t, 2> &blockDimensions = {1, 1})
54 Block::blockDimensions = blockDimensions;
59 const std::array<std::size_t, 2> &blockDimensions = {1, 1})
62 Block::blockDimensions = blockDimensions;
67 const std::array<std::size_t, 2> &blockDimensions_ = {1, 1}) {
71 Block::blockDimensions = blockDimensions_;
74 COOMatrix(
const std::array<std::size_t, 2> &blockDimensions = {1, 1}) {
75 Block::blockDimensions = blockDimensions;
77 COOMatrix(
const COOMatrix &) =
default;
102 const std::array<std::size_t, 2> &blockDimensions = {1, 1})
105 Block::blockDimensions = blockDimensions;
110 const std::array<std::size_t, 2> &blockDimensions = {1, 1})
113 Block::blockDimensions = blockDimensions;
117 CSCMatrix(std::size_t numNZValues, std::size_t numColumns,
118 const std::array<std::size_t, 2> &blockDimensions_ = {1, 1}) {
122 Block::blockDimensions = blockDimensions_;
125 CSCMatrix(
const std::array<std::size_t, 2> &blockDimensions_ = {1, 1}) {
126 Block::blockDimensions = blockDimensions_;
128 CSCMatrix(
const CSCMatrix &) =
default;
151 const std::array<std::size_t, 2> &blockDimensions = {1, 1})
154 Block::blockDimensions = blockDimensions;
159 const std::array<std::size_t, 2> &blockDimensions = {1, 1})
162 Block::blockDimensions = blockDimensions;
166 CSRMatrix(std::size_t numNZValues, std::size_t numRows,
167 const std::array<std::size_t, 2> &blockDimensions_ = {1, 1}) {
171 Block::blockDimensions = blockDimensions_;
174 CSRMatrix(
const std::array<std::size_t, 2> &blockDimensions_ = {1, 1}) {
175 Block::blockDimensions = blockDimensions_;
177 CSRMatrix(
const CSRMatrix &) =
default;
@ Block
Sparsity is defined at a block level.
Support for sparse matrices.
Definition: codelets.hpp:8
Block Sparse matrix stored as coordinate (COO) or triplets format.
Definition: SparseStorageFormats.hpp:38
COOMatrix(std::size_t numNZValues, const std::array< std::size_t, 2 > &blockDimensions_={1, 1})
Constructor to allocate memory.
Definition: SparseStorageFormats.hpp:66
std::vector< std::size_t > rowIndices
Corresponding row indices for the non-zero values.
Definition: SparseStorageFormats.hpp:46
std::vector< T > nzValues
The non-zero values of the sparse matrix.
Definition: SparseStorageFormats.hpp:40
std::vector< std::size_t > columnIndices
Corresponding column indices for the non-zero values.
Definition: SparseStorageFormats.hpp:43
Sparse matrix stored in compressed sparse columns (CSC) format for a matrix of size [M x N].
Definition: SparseStorageFormats.hpp:85
std::vector< T > nzValues
The non-zero values of the sparse matrix.
Definition: SparseStorageFormats.hpp:88
std::vector< std::size_t > rowIndices
The row index of each block in nzValues.
Definition: SparseStorageFormats.hpp:97
CSCMatrix(std::size_t numNZValues, std::size_t numColumns, const std::array< std::size_t, 2 > &blockDimensions_={1, 1})
Constructor to allocate memory.
Definition: SparseStorageFormats.hpp:117
std::vector< std::size_t > columnIndices
Indices where non-zero values for each column block starts.
Definition: SparseStorageFormats.hpp:93
Sparse matrix stored in compressed sparse rows (CSR) format for a matrix of size [M x N].
Definition: SparseStorageFormats.hpp:136
std::vector< T > nzValues
The non-zero values of the sparse matrix.
Definition: SparseStorageFormats.hpp:138
std::vector< std::size_t > rowIndices
Indices where non-zero blocks of each row start.
Definition: SparseStorageFormats.hpp:146
std::vector< std::size_t > columnIndices
The column index of each block in nzValues.
Definition: SparseStorageFormats.hpp:142