-
Notifications
You must be signed in to change notification settings - Fork 1
/
CSRMatrix.hpp
44 lines (34 loc) · 1.49 KB
/
CSRMatrix.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#ifndef CSRMATRIX_HPP
#define CSRMATRIX_HPP
#include <vector>
#include "MMreader.hpp"
/*****Class CSR_MATRIX********************************************************/
class CSR_Matrix
{
public:
CSR_Matrix( MMreader mmMatrix ); // constructor
~CSR_Matrix(); // destructor
int getRows() const { return M_; }
int getCols() const { return N_; }
int getNonZeros() const { return nz_; }
int const * getColInd() const { return colInd_; }
int const * getRowPtr() const { return rowPtr_; }
double const * getValues() const { return val_; }
// We do not need copy and move symantic for this benchmark
CSR_Matrix(CSR_Matrix const & other) = delete; // copy constructor
CSR_Matrix(CSR_Matrix && other) = delete; // move constructor
CSR_Matrix & operator= (CSR_Matrix const & other) = delete; // copy assignment
CSR_Matrix & operator= (CSR_Matrix && other) = delete; // move assignment
private:
int M_, N_, nz_; // numer of rows, columns and non zeros
int *colInd_, *rowPtr_; // colum Indices of matrix elements, row Pointer
double *val_; // values of matrix elements
// NOTE: We use row pointer here to ensure NUMA awareness.
};
/*****Free Functions*CSR_MATRIX***********************************************/
/**
* output operator
* prints the CSR matrix to os
*/
std::ostream& operator<<(std::ostream& os, CSR_Matrix const & matrix);
#endif