|
DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
|
Non-owning device-callable view of an Array, specialised per DeviceBackend. More...
#include <DeviceView.hpp>
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 |
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>().
| B | Device backend. |
| T | Element type (may be const T for read-only views). |
| _row_size | Mirrors Array. |
| _row_max | Mirrors Array. |
| _align | Mirrors Array. |
Definition at line 39 of file DeviceView.hpp.
|
delete |