DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
DNDS::ArrayDeviceView< B, T, _row_size, _row_max, _align > Class Template Reference

Non-owning device-callable view of an Array, specialised per DeviceBackend. More...

#include <DeviceView.hpp>

Inheritance diagram for DNDS::ArrayDeviceView< B, T, _row_size, _row_max, _align >:
[legend]
Collaboration diagram for DNDS::ArrayDeviceView< B, T, _row_size, _row_max, _align >:
[legend]

Public Member Functions

 ArrayDeviceView ()=delete
 
- Public Member Functions inherited from DNDS::ArrayView< T, _row_size, _row_max, _align >
DNDS_DEVICE_CALLABLE ArrayView (index n_size, T *n_data, index n_data_size, const index *n_rowstart, index n_rowstart_size, const rowsize *n_rowsizes, index n_rowsizes_size, rowsize n_row_size_dynamic, bool n_isCompressed, t_dataUncompressed *n_p_dataUncompressed)
 Construct a view from raw pointers. Intended for internal use by Array::view().
 
DNDS_DEVICE_CALLABLE bool isCompressed () const
 Whether the underlying array is in the compressed (flat) form (always true for non-CSR).
 
DNDS_DEVICE_CALLABLE index Size () const
 Number of rows in the viewed array.
 
DNDS_DEVICE_CALLABLE rowsize RowSize () const
 Uniform row width for fixed layouts (asserts otherwise).
 
DNDS_DEVICE_CALLABLE rowsize RowSize (index iRow) const
 Per-row width. Handles CSR compressed and decompressed modes.
 
DNDS_DEVICE_CALLABLE rowsize RowSizeMax () const
 Maximum row width (TABLE_*Max only).
 
DNDS_DEVICE_CALLABLE rowsize RowSizeField () const
 "Logical" row-field width used by derived Eigen arrays; see Array::RowSizeField.
 
DNDS_DEVICE_CALLABLE rowsize RowSizeField (index iRow) const
 Per-row "field" size for CSR (= actual row width).
 
const T & at (index iRow, rowsize iCol) const
 Bounds-checked element read (not device-callable because CSR decompressed uses std::vector::at which throws on the host).
 
T & operator() (index iRow, rowsize iCol=0)
 2D indexed access (writable). See at.
 
const T & operator() (index iRow, rowsize iCol=0) const
 2D indexed access (read-only).
 
T * operator[] (index iRow)
 Raw row pointer. iRow == Size() is allowed for past-the-end queries (useful for computing buffer end in sweeps).
 
const T * operator[] (index iRow) const
 Const row pointer; see the non-const overload.
 
DNDS_DEVICE_CALLABLE T * data ()
 Raw pointer to the start of the flat data buffer.
 
DNDS_DEVICE_CALLABLE size_t DataSize () const
 Size of the flat data buffer in T elements.
 
DNDS_DEVICE_CALLABLE bool operator== (const self_type &R) const
 Pointer equality (two views referring to the same buffer).
 

Additional Inherited Members

- Public Types inherited from DNDS::ArrayLayout< T, _row_size, _row_max, _align >
using value_type = T
 
- Static Public Member Functions inherited from DNDS::ArrayLayout< T, _row_size, _row_max, _align >
static constexpr DataLayout _GetDataLayout ()
 Deduce the DataLayout tag from the template parameters.
 
static std::string GetArrayName ()
 Human-readable type identifier including element typeid, sizes, and alignment.
 
static std::string GetArraySignature ()
 Compiler-independent identifier used by serializers to tag an array.
 
static std::string GetArraySignatureRelaxed ()
 Signature with _row_size / _row_max replaced by DynamicSize.
 
static std::tuple< int, int, int, int > ParseArraySignatureTuple (const std::string &v)
 Parse a signature string into (sizeof_T, row_size, row_max, align).
 
static bool ArraySignatureIsCompatible (const std::string &v)
 Whether a stored signature can be read into this array type.
 
- Static Public Attributes inherited from DNDS::ArrayLayout< T, _row_size, _row_max, _align >
static const rowsize al = _align
 
static const rowsize rs = _row_size
 
static const rowsize rm = _row_max
 
static const size_t sizeof_T = sizeof(value_type)
 
static const rowsize s_T = al == NoAlign ? sizeof_T : (sizeof_T / al + 1) * al
 
static const DataLayout _dataLayout = _GetDataLayout()
 
static const bool isCSR = _dataLayout == CSR
 
- Protected Types inherited from DNDS::ArrayView< T, _row_size, _row_max, _align >
using self_type = ArrayView< T, _row_size, _row_max, _align >
 
using t_Layout = ArrayLayout< T, _row_size, _row_max, _align >
 
using t_dataUncompressed = std::vector< std::vector< T > >
 
- Protected Member Functions inherited from DNDS::ArrayView< T, _row_size, _row_max, _align >
DNDS_DEVICE_CALLABLE rowsize RowSize_Compressed (index iRow) const
 
DNDS_DEVICE_CALLABLE const T & at_compressed (index iRow, rowsize iCol) const
 
DNDS_DEVICE_CALLABLE T * get_rowstart_pointer_compressed (index iRow)
 
- Protected Attributes inherited from DNDS::ArrayView< T, _row_size, _row_max, _align >
index _size
 
T * _data = nullptr
 
index _data_size = 0
 
std::conditional_t< _dataLayout==CSR, const index *, std::conditional_t< _dataLayout==TABLE_Max||_dataLayout==TABLE_StaticMax, const rowsize *, EmptyNoDefault > > _rowstart_or_rowsize = nullptr
 
bool _isCompressed = true
 
std::conditional_t< _dataLayout==TABLE_Max||_dataLayout==TABLE_Fixed, rowsize, EmptyNoDefault_row_size_dynamic = 0
 
std::conditional_t< _dataLayout==CSR, t_dataUncompressed *, EmptyNoDefault_p_dataUncompressed = nullptr
 

Detailed Description

template<DeviceBackend B, class T, rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
class DNDS::ArrayDeviceView< B, T, _row_size, _row_max, _align >

Non-owning device-callable view of an Array, specialised per DeviceBackend.

The primary template is deleted; concrete specialisations are provided for each supported backend (Host always, CUDA when DNDS_USE_CUDA is on). A device view captures host and/or device raw pointers; on the CUDA specialisation the element accessors are marked __device__ so kernels can use them directly.

Produced by Array::deviceView<B>().

Template Parameters
BDevice backend.
TElement type (may be const T for read-only views).
_row_sizeMirrors Array.
_row_maxMirrors Array.
_alignMirrors Array.

Definition at line 39 of file DeviceView.hpp.

Constructor & Destructor Documentation

◆ ArrayDeviceView()

template<DeviceBackend B, class T , rowsize _row_size = 1, rowsize _row_max = _row_size, rowsize _align = NoAlign>
DNDS::ArrayDeviceView< B, T, _row_size, _row_max, _align >::ArrayDeviceView ( )
delete

The documentation for this class was generated from the following file: