21 #ifdef LVARRAY_BOUNDS_CHECK 28 #define SPARSITYPATTERN_COLUMN_CHECK( col ) \ 29 LVARRAY_ERROR_IF( !arrayManipulation::isPositive( col ) || col >= this->numColumns(), \ 30 "Column Check Failed: col=" << col << " numColumns=" << this->numColumns() ) 32 #else // LVARRAY_BOUNDS_CHECK 39 #define SPARSITYPATTERN_COLUMN_CHECK( col ) 58 template<
typename COL_TYPE,
60 template<
typename >
class BUFFER_TYPE >
73 static_assert( std::is_integral< COL_TYPE >::value,
"COL_TYPE must be integral." );
74 static_assert( std::is_integral< INDEX_TYPE >::value,
"INDEX_TYPE must be integral." );
106 { src.m_numCols = 0; }
118 INDEX_TYPE
const nCols,
119 BUFFER_TYPE< INDEX_TYPE >
const & offsets,
120 BUFFER_TYPE< SIZE_TYPE >
const & nnz,
121 BUFFER_TYPE< COL_TYPE >
const & columns ):
255 bool empty( INDEX_TYPE
const row )
const 264 bool empty( INDEX_TYPE
const row, COL_TYPE
const col )
const 280 {
return (*
this)[row]; }
335 template<
typename ITER >
341 #ifdef LVARRAY_BOUNDS_CHECK 342 for( ITER iter = first; iter != last; ++iter )
373 template<
typename ITER >
379 #ifdef LVARRAY_BOUNDS_CHECK 380 for( ITER iter = first; iter != last; ++iter )
422 *
this = std::move( src );
433 template<
class ... BUFFERS >
435 INDEX_TYPE
const ncols,
437 BUFFERS & ... buffers )
442 "COL_TYPE must be able to hold the range of columns: [0, " << ncols - 1 <<
"]." );
#define SPARSITYPATTERN_COLUMN_CHECK(col)
Check that col is a valid column in the matrix.
Definition: SparsityPatternView.hpp:39
LVARRAY_HOST_DEVICE bool empty(INDEX_TYPE const row, COL_TYPE const col) const
Definition: SparsityPatternView.hpp:264
LVARRAY_HOST_DEVICE bool removeNonZero(INDEX_TYPE const row, COL_TYPE const col) const
Remove a non-zero entry at the given position.
Definition: SparsityPatternView.hpp:356
This class provides a view into a compressed row storage sparsity pattern.
Definition: SparsityPatternView.hpp:61
LVARRAY_HOST_DEVICE constexpr COL_TYPE const * getColumns() const
Definition: SparsityPatternView.hpp:293
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC numNonZeros(INDEX_TYPE const row) const
Definition: SparsityPatternView.hpp:224
#define ARRAYOFARRAYS_CHECK_BOUNDS(i)
Check that i is a valid array index.
Definition: ArrayOfArraysView.hpp:106
SparsityPatternView(SparsityPatternView &&src)
Move constructor.
Definition: SparsityPatternView.hpp:103
LVARRAY_HOST_DEVICE constexpr SparsityPatternView(INDEX_TYPE const nRows, INDEX_TYPE const nCols, BUFFER_TYPE< INDEX_TYPE > const &offsets, BUFFER_TYPE< SIZE_TYPE > const &nnz, BUFFER_TYPE< COL_TYPE > const &columns)
Construct a new CRSMatrixView from the given buffers.
Definition: SparsityPatternView.hpp:117
#define LVARRAY_ERROR_IF(EXP, MSG)
Abort execution if EXP is true.
Definition: Macros.hpp:122
This class serves to provide a sliced multidimensional interface to the family of LvArray classes...
Definition: ArraySlice.hpp:89
BUFFER_TYPE< INDEX_TYPE > m_offsets
Definition: ArrayOfArraysView.hpp:965
void assimilate(SparsityPatternView &&src)
Steal the resources of src, clearing it in the process.
Definition: SparsityPatternView.hpp:419
BUFFER_TYPE< COL_TYPE > m_values
Definition: ArrayOfArraysView.hpp:972
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC capacityOfSet(INDEX_TYPE const i) const
Definition: ArrayOfSetsView.hpp:181
BUFFER_TYPE< SIZE_TYPE > m_sizes
Holds the size of each array.
Definition: ArrayOfArraysView.hpp:968
LVARRAY_HOST_DEVICE bool insertIntoSet(INDEX_TYPE const i, COL_TYPE const &value) const
Insert a value into the given set.
Definition: ArrayOfSetsView.hpp:261
LVARRAY_HOST_DEVICE constexpr COL_TYPE const * getValues() const
Definition: ArrayOfArraysView.hpp:361
LVARRAY_HOST_DEVICE constexpr std::enable_if< std::is_signed< INDEX_TYPE >::value, bool >::type isPositive(INDEX_TYPE const i)
Definition: arrayManipulation.hpp:82
LVARRAY_HOST_DEVICE bool removeFromSet(INDEX_TYPE const i, COL_TYPE const &value) const
Remove a value from the given set.
Definition: ArrayOfSetsView.hpp:287
void resize(INDEX_TYPE const nrows, INDEX_TYPE const ncols, INDEX_TYPE_NC initialRowCapacity, BUFFERS &... buffers)
Resize the SparsityPattern to the given size.
Definition: SparsityPatternView.hpp:434
This class provides a view into an array of sets like object.
Definition: ArrayOfSetsView.hpp:40
SparsityPatternView()=default
A constructor to create an uninitialized SparsityPatternView.
LVARRAY_HOST_DEVICE INDEX_TYPE_NC numNonZeros() const
Definition: SparsityPatternView.hpp:208
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC valueCapacity() const
Definition: ArrayOfArraysView.hpp:393
INDEX_TYPE IndexType
The integer type used for indexing.
Definition: ArrayOfArraysView.hpp:188
void resizeImpl(INDEX_TYPE const newSize, INDEX_TYPE const defaultArrayCapacity, BUFFERS &... buffers)
Set the number of arrays.
Definition: ArrayOfArraysView.hpp:759
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC numRows() const
Definition: SparsityPatternView.hpp:194
void move(MemorySpace const space, bool const touch=true) const
Move this ArrayOfSets to the given memory space.
Definition: ArrayOfSetsView.hpp:320
LVARRAY_HOST_DEVICE bool empty() const
Definition: SparsityPatternView.hpp:247
LVARRAY_HOST_DEVICE constexpr bool empty(INDEX_TYPE const row) const
Definition: SparsityPatternView.hpp:255
camp::resources::Platform MemorySpace
an alias for camp::resources::Platform.
Definition: bufferManipulation.hpp:31
LVARRAY_HOST_DEVICE bool contains(INDEX_TYPE const i, COL_TYPE const &value) const
Definition: ArrayOfSetsView.hpp:192
The top level namespace.
Definition: Array.hpp:24
INDEX_TYPE_NC m_numCols
The number of columns in the matrix.
Definition: SparsityPatternView.hpp:449
SparsityPatternView & operator=(SparsityPatternView const &)=default
Default copy assignment operator, this does a shallow copy.
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC sizeOfSet(INDEX_TYPE const i) const
Definition: ArrayOfSetsView.hpp:171
LVARRAY_HOST_DEVICE bool insertNonZero(INDEX_TYPE const row, COL_TYPE const col) const
Insert a non-zero entry at the given position.
Definition: SparsityPatternView.hpp:317
COL_TYPE ColType
The integer type used to enumerate the columns.
Definition: SparsityPatternView.hpp:77
LVARRAY_HOST_DEVICE constexpr SparsityPatternView< COL_TYPE, INDEX_TYPE const, BUFFER_TYPE > toView() const
Definition: SparsityPatternView.hpp:160
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE const * getOffsets() const
Definition: SparsityPatternView.hpp:286
typename ParentClass::INDEX_TYPE_NC INDEX_TYPE_NC
Since INDEX_TYPE should always be const we need an alias for the non const version.
Definition: ArrayOfSetsView.hpp:47
void free(BUFFERS &... buffers)
Destroy all the objects held by this array and free all associated memory.
Definition: ArrayOfArraysView.hpp:806
std::conditional_t< CONST_SIZES, INDEX_TYPE const, INDEX_TYPE_NC > SIZE_TYPE
The type contained by the m_sizes buffer.
Definition: ArrayOfArraysView.hpp:177
void move(MemorySpace const space, bool const touch=true) const
Move this ArrayOfSets to the given memory space.
Definition: SparsityPatternView.hpp:400
SparsityPatternView & operator=(SparsityPatternView &&src)
Move assignment operator, this does a shallow copy.
Definition: SparsityPatternView.hpp:139
ArrayOfSetsView & operator=(ArrayOfSetsView const &)=default
Default copy assignment operator, this does a shallow copy.
LVARRAY_HOST_DEVICE constexpr std::enable_if_t< std::is_arithmetic< T >::value, T > max(T const a, T const b)
Definition: math.hpp:311
LVARRAY_HOST_DEVICE INDEX_TYPE_NC insertNonZeros(INDEX_TYPE const row, ITER const first, ITER const last) const
Inserts multiple non-zero entries into the given row.
Definition: SparsityPatternView.hpp:337
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC nonZeroCapacity() const
Definition: SparsityPatternView.hpp:231
Contains the implementation of LvArray::ArrayOfSetsView.
SparsityPatternView(bool)
Protected constructor to be used by parent classes.
Definition: SparsityPatternView.hpp:411
LVARRAY_HOST_DEVICE constexpr ArraySlice< COL_TYPE const, 1, 0, INDEX_TYPE_NC > getColumns(INDEX_TYPE const row) const
Definition: SparsityPatternView.hpp:279
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC nonZeroCapacity(INDEX_TYPE const row) const
Definition: SparsityPatternView.hpp:240
#define DISABLE_HD_WARNING
Disable host device warnings.
Definition: Macros.hpp:561
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC size() const
Definition: ArrayOfArraysView.hpp:323
LVARRAY_HOST_DEVICE constexpr SIZE_TYPE const * getSizes() const
Definition: ArrayOfArraysView.hpp:341
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC numColumns() const
Definition: SparsityPatternView.hpp:201
typename ParentClass::INDEX_TYPE_NC INDEX_TYPE_NC
Since INDEX_TYPE should always be const we need an alias for the non const version.
Definition: ArrayOfSetsView.hpp:47
LVARRAY_HOST_DEVICE constexpr SparsityPatternView< COL_TYPE const, INDEX_TYPE const, BUFFER_TYPE > toViewConst() const
Definition: SparsityPatternView.hpp:174
DISABLE_HD_WARNING LVARRAY_HOST_DEVICE INDEX_TYPE_NC removeNonZeros(INDEX_TYPE const row, ITER const first, ITER const last) const
Remove multiple non-zero entries from the given row.
Definition: SparsityPatternView.hpp:375
#define LVARRAY_HOST_DEVICE
Mark a function for both host and device usage.
Definition: Macros.hpp:549