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

Device-callable view onto ArrayEigenVector rows. More...

#include <ArrayEigenVector_DeviceView.hpp>

Inheritance diagram for DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >:
[legend]
Collaboration diagram for DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >:
[legend]

Public Types

using t_base = ArrayDeviceView< B, real_T, _vec_size, _row_max, _align >
 
using t_self = ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >
 
using t_EigenVector = Eigen::Matrix< std::remove_cv_t< real_T >, RowSize_To_EigenSize(_vec_size), 1, Eigen::DontAlign|Eigen::ColMajor, RowSize_To_EigenSize(_row_max), 1 >
 
using t_EigenMap_Const = Eigen::Map< const t_EigenVector, Eigen::Unaligned >
 
using t_EigenMap = std::conditional_t< std::is_const_v< real_T >, t_EigenMap_Const, Eigen::Map< t_EigenVector, Eigen::Unaligned > >
 
- Public Types inherited from DNDS::ArrayLayout< T, _row_size, _row_max, _align >
using value_type = T
 

Public Member Functions

DNDS_DEVICE_CALLABLE ArrayEigenVectorDeviceView (const t_base &base_view)
 
DNDS_DEVICE_CALLABLE t_EigenMap operator[] (index i)
 
DNDS_DEVICE_CALLABLE t_EigenMap_Const operator[] (index i) const
 
- Public Member Functions inherited from DNDS::ArrayDeviceView< B, T, _row_size, _row_max, _align >
 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

- 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 real_T, rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
class DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >

Device-callable view onto ArrayEigenVector rows.

Extends the generic ArrayDeviceView to yield an Eigen::Map<Vector> on operator[]. The Eigen maps use Eigen::DontAlign to avoid assumptions about the backing pointer's alignment (which is device-allocator specific).

Template Parameters
real_TDNDS::real or const DNDS::real for a const view.
_vec_size/ _row_max / _align Same meaning as in the host class.

Definition at line 25 of file ArrayEigenVector_DeviceView.hpp.

Member Typedef Documentation

◆ t_base

template<DeviceBackend B, class real_T , rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >::t_base = ArrayDeviceView<B, real_T, _vec_size, _row_max, _align>

Definition at line 28 of file ArrayEigenVector_DeviceView.hpp.

◆ t_EigenMap

template<DeviceBackend B, class real_T , rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >::t_EigenMap = std::conditional_t<std::is_const_v<real_T>, t_EigenMap_Const, Eigen::Map<t_EigenVector, Eigen::Unaligned> >

Definition at line 40 of file ArrayEigenVector_DeviceView.hpp.

◆ t_EigenMap_Const

template<DeviceBackend B, class real_T , rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >::t_EigenMap_Const = Eigen::Map<const t_EigenVector, Eigen::Unaligned>

Definition at line 39 of file ArrayEigenVector_DeviceView.hpp.

◆ t_EigenVector

template<DeviceBackend B, class real_T , rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >::t_EigenVector = Eigen::Matrix<std::remove_cv_t<real_T>, RowSize_To_EigenSize(_vec_size), 1, Eigen::DontAlign | Eigen::ColMajor, RowSize_To_EigenSize(_row_max), 1>

Definition at line 37 of file ArrayEigenVector_DeviceView.hpp.

◆ t_self

template<DeviceBackend B, class real_T , rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
using DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >::t_self = ArrayEigenVectorDeviceView<B, real_T, _vec_size, _row_max, _align>

Definition at line 31 of file ArrayEigenVector_DeviceView.hpp.

Constructor & Destructor Documentation

◆ ArrayEigenVectorDeviceView()

template<DeviceBackend B, class real_T , rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
DNDS_DEVICE_CALLABLE DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >::ArrayEigenVectorDeviceView ( const t_base base_view)
inline

Definition at line 35 of file ArrayEigenVector_DeviceView.hpp.

Member Function Documentation

◆ operator[]() [1/2]

template<DeviceBackend B, class real_T , rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
DNDS_DEVICE_CALLABLE t_EigenMap DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >::operator[] ( index  i)
inline

Definition at line 45 of file ArrayEigenVector_DeviceView.hpp.

Here is the call graph for this function:

◆ operator[]() [2/2]

template<DeviceBackend B, class real_T , rowsize _vec_size = 1, rowsize _row_max = _vec_size, rowsize _align = NoAlign>
DNDS_DEVICE_CALLABLE t_EigenMap_Const DNDS::ArrayEigenVectorDeviceView< B, real_T, _vec_size, _row_max, _align >::operator[] ( index  i) const
inline

Definition at line 50 of file ArrayEigenVector_DeviceView.hpp.

Here is the call graph for this function:

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