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 >
64 using COL_TYPE_NC = std::remove_const_t< COL_TYPE >;
74 static_assert( std::is_integral< COL_TYPE >::value,
"COL_TYPE must be integral." );
75 static_assert( std::is_integral< INDEX_TYPE >::value,
"INDEX_TYPE must be integral." );
80 using ColTypeNC = COL_TYPE_NC;
109 { src.m_numCols = 0; }
121 COL_TYPE
const nCols,
122 BUFFER_TYPE< INDEX_TYPE >
const & offsets,
123 BUFFER_TYPE< SIZE_TYPE >
const & nnz,
124 BUFFER_TYPE< COL_TYPE >
const & columns ):
258 bool empty( INDEX_TYPE
const row )
const 267 bool empty( INDEX_TYPE
const row, COL_TYPE
const col )
const 283 {
return (*
this)[row]; }
338 template<
typename ITER >
344 #ifdef LVARRAY_BOUNDS_CHECK 345 for( ITER iter = first; iter != last; ++iter )
376 template<
typename ITER >
382 #ifdef LVARRAY_BOUNDS_CHECK 383 for( ITER iter = first; iter != last; ++iter )
425 *
this = std::move( src );
436 template<
class ... BUFFERS >
438 COL_TYPE
const ncols,
440 BUFFERS & ... buffers )
445 "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:267
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:359
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:296
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC const numNonZeros(INDEX_TYPE const row) const
Definition: SparsityPatternView.hpp:227
#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:106
#define LVARRAY_ERROR_IF(EXP, MSG)
Abort execution if EXP is true.
Definition: Macros.hpp:155
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:422
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:362
void resize(INDEX_TYPE const nrows, COL_TYPE const ncols, INDEX_TYPE_NC initialRowCapacity, BUFFERS &... buffers)
Resize the SparsityPattern to the given size.
Definition: SparsityPatternView.hpp:437
COL_TYPE_NC m_numCols
The number of columns in the matrix.
Definition: SparsityPatternView.hpp:452
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
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 constexpr INDEX_TYPE_NC const numRows() const
Definition: SparsityPatternView.hpp:197
LVARRAY_HOST_DEVICE INDEX_TYPE_NC numNonZeros() const
Definition: SparsityPatternView.hpp:211
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC valueCapacity() const
Definition: ArrayOfArraysView.hpp:394
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
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:250
LVARRAY_HOST_DEVICE constexpr bool empty(INDEX_TYPE const row) const
Definition: SparsityPatternView.hpp:258
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
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC const nonZeroCapacity() const
Definition: SparsityPatternView.hpp:234
The top level namespace.
Definition: Array.hpp:24
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:320
COL_TYPE ColType
The integer type used to enumerate the columns.
Definition: SparsityPatternView.hpp:79
LVARRAY_HOST_DEVICE constexpr SparsityPatternView< COL_TYPE, INDEX_TYPE const, BUFFER_TYPE > toView() const
Definition: SparsityPatternView.hpp:163
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE const * getOffsets() const
Definition: SparsityPatternView.hpp:289
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
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC const nonZeroCapacity(INDEX_TYPE const row) const
Definition: SparsityPatternView.hpp:243
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:403
SparsityPatternView & operator=(SparsityPatternView &&src)
Move assignment operator, this does a shallow copy.
Definition: SparsityPatternView.hpp:142
ArrayOfSetsView & operator=(ArrayOfSetsView const &)=default
Default copy assignment operator, this does a shallow copy.
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:340
Contains the implementation of LvArray::ArrayOfSetsView.
SparsityPatternView(bool)
Protected constructor to be used by parent classes.
Definition: SparsityPatternView.hpp:414
LVARRAY_HOST_DEVICE constexpr ArraySlice< COL_TYPE const, 1, 0, INDEX_TYPE_NC > getColumns(INDEX_TYPE const row) const
Definition: SparsityPatternView.hpp:282
LVARRAY_HOST_DEVICE constexpr COL_TYPE const numColumns() const
Definition: SparsityPatternView.hpp:204
#define DISABLE_HD_WARNING
Disable host device warnings.
Definition: Macros.hpp:614
LVARRAY_HOST_DEVICE constexpr INDEX_TYPE_NC size() const
Definition: ArrayOfArraysView.hpp:324
LVARRAY_HOST_DEVICE constexpr SIZE_TYPE const * getSizes() const
Definition: ArrayOfArraysView.hpp:342
LVARRAY_HOST_DEVICE constexpr SparsityPatternView(INDEX_TYPE const nRows, COL_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:120
LVARRAY_HOST_DEVICE LVARRAY_FORCE_INLINE constexpr std::enable_if_t< std::is_arithmetic< T >::value, T > max(T const a, T const b)
Definition: math.hpp:313
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:177
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:378
#define LVARRAY_HOST_DEVICE
Mark a function for both host and device usage.
Definition: Macros.hpp:600