Template Numerical Library version\ main:0c33d623
|
Dynamic N-dimensional array with configurable slicing/tiling. More...
#include <TNL/Containers/NDArray.h>
Public Types | |
using | AllocatorType = Allocator |
Allocator type used for allocating the array. | |
![]() | |
using | ConstViewType = NDArrayView< std::add_const_t< ValueType >, DeviceType, IndexerType > |
Compatible constant NDArrayView type. | |
using | DeviceType = Device |
Type of the device used for running operations on the array. | |
using | IndexerType = Indexer |
Type of the N-dimensional indexer, NDArrayIndexer. | |
using | IndexType = typename Indexer::IndexType |
Type of indices used for addressing the array elements. | |
using | OverlapsType = typename Indexer::OverlapsType |
Sequence of integers representing the overlaps in each dimension of a distributed N-dimensional array. | |
using | PermutationType = typename Indexer::PermutationType |
Permutation that is applied to indices when accessing the array elements. | |
using | SizesHolderType = typename Indexer::SizesHolderType |
Type of the underlying object which represents the sizes of the N-dimensional array. | |
using | StorageArray = Array |
Type of the underlying one-dimensional array storing the elements. | |
using | ValueType = typename Array::ValueType |
Type of the values stored in the array. | |
using | ViewType = NDArrayView< ValueType, DeviceType, IndexerType > |
Compatible NDArrayView type. | |
Public Member Functions | |
SlicedNDArray ()=default | |
Constructs an empty array with zero size. | |
SlicedNDArray (const AllocatorType &allocator) | |
Constructs an empty array and sets the provided allocator. | |
SlicedNDArray (const SlicedNDArray &other, const AllocatorType &allocator) | |
Copy constructor with a specific allocator (makes a deep copy). | |
AllocatorType | getAllocator () const |
Returns the allocator associated with the array. | |
NDArrayStorage & | operator= (const NDArrayStorage &other)=default |
Copy-assignment operator for deep-copying data from another array. Mismatched sizes cause reallocations. | |
template<typename OtherArray > | |
NDArrayStorage & | operator= (const OtherArray &other) |
Templated copy-assignment operator for deep-copying data from another array. | |
NDArrayStorage & | operator= (NDArrayStorage &&) noexcept(false)=default |
Move-assignment operator for acquiring data from rvalues. | |
![]() | |
NDArrayStorage ()=default | |
Constructs an empty storage with zero size. | |
NDArrayStorage (const NDArrayStorage &)=default | |
Copy constructor (makes a deep copy). | |
NDArrayStorage (NDArrayStorage &&) noexcept=default | |
Move constructor for initialization from rvalues. | |
template<typename Device2 = DeviceType, typename Func > | |
void | forAll (Func f, const typename Device2::LaunchConfiguration &launch_configuration=typename Device2::LaunchConfiguration{}) const |
Evaluates the function f in parallel for all elements of the array. | |
template<typename Device2 = DeviceType, typename SkipBegins , typename SkipEnds , typename Func > | |
void | forBoundary (const SkipBegins &skipBegins, const SkipEnds &skipEnds, Func f, const typename Device2::LaunchConfiguration &launch_configuration=typename Device2::LaunchConfiguration{}) const |
Evaluates the function f in parallel for all elements of the array outside the N-dimensional interval [skipBegins, skipEnds) . | |
template<typename Device2 = DeviceType, typename Func > | |
void | forBoundary (Func f, const typename Device2::LaunchConfiguration &launch_configuration=typename Device2::LaunchConfiguration{}) const |
Evaluates the function f in parallel for all boundary elements of the array. | |
template<typename Device2 = DeviceType, typename Begins , typename Ends , typename Func > | |
void | forInterior (const Begins &begins, const Ends &ends, Func f, const typename Device2::LaunchConfiguration &launch_configuration=typename Device2::LaunchConfiguration{}) const |
Evaluates the function f in parallel for all elements of the array inside the N-dimensional interval [begins, ends) . | |
template<typename Device2 = DeviceType, typename Func > | |
void | forInterior (Func f, const typename Device2::LaunchConfiguration &launch_configuration=typename Device2::LaunchConfiguration{}) const |
Evaluates the function f in parallel for all internal elements of the array. | |
__cuda_callable__ ConstViewType | getConstView () const |
Returns a non-modifiable view of the array. | |
__cuda_callable__ ValueType * | getData () |
Returns a raw pointer to the data. | |
__cuda_callable__ std::add_const_t< ValueType > * | getData () const |
Returns a const-qualified raw pointer to the data. | |
template<typename... IndexTypes> | |
ValueType | getElement (IndexTypes &&... indices) const |
A "safe" accessor for array elements. | |
__cuda_callable__ const IndexerType & | getIndexer () const |
Returns a const-qualified reference to the underlying indexer. | |
StorageArray & | getStorageArray () |
Returns a reference to the underlying storage array. | |
const StorageArray & | getStorageArray () const |
Returns a constant reference to the underlying storage array. | |
template<std::size_t... Dimensions, typename... IndexTypes> | |
__cuda_callable__ auto | getSubarrayView (IndexTypes &&... indices) |
Returns a modifiable view of a subarray. | |
__cuda_callable__ ViewType | getView () |
Returns a modifiable view of the array. | |
bool | operator!= (const NDArrayStorage &other) const |
Compares the array with another N-dimensional array. | |
template<typename... IndexTypes> | |
__cuda_callable__ ValueType & | operator() (IndexTypes &&... indices) |
Accesses an element of the array. | |
template<typename... IndexTypes> | |
__cuda_callable__ const ValueType & | operator() (IndexTypes &&... indices) const |
Accesses an element of the array. | |
NDArrayStorage & | operator= (const NDArrayStorage &other)=default |
Copy-assignment operator for deep-copying data from another array. Mismatched sizes cause reallocations. | |
template<typename OtherArray > | |
NDArrayStorage & | operator= (const OtherArray &other) |
Templated copy-assignment operator for deep-copying data from another array. | |
NDArrayStorage & | operator= (NDArrayStorage &&) noexcept(false)=default |
Move-assignment operator for acquiring data from rvalues. | |
bool | operator== (const NDArrayStorage &other) const |
Compares the array with another N-dimensional array. | |
__cuda_callable__ ValueType & | operator[] (IndexType index) |
Accesses an element in a one-dimensional array. | |
__cuda_callable__ const ValueType & | operator[] (IndexType index) const |
Accesses an element in a one-dimensional array. | |
void | reset () |
Resets the array to the empty state. | |
void | setLike (const NDArrayStorage &other) |
Sets sizes of the array to the sizes of an existing array. | |
void | setSize (const SizesHolderType &sizes) |
Sets sizes of the array using an instance of SizesHolder. | |
template<typename... IndexTypes> | |
void | setSizes (IndexTypes &&... sizes) |
Sets sizes of the array using raw integers. | |
void | setValue (ValueType value) |
Sets all elements of the array to given value. | |
Additional Inherited Members | |
![]() | |
StorageArray | array |
Underlying one-dimensional array which stores the data. | |
IndexerType | indexer |
Object which transforms the multi-dimensional indices to a one-dimensional index. | |
Dynamic N-dimensional array with configurable slicing/tiling.
Value | Type of the values stored in the array. |
SizesHolder | Instance of SizesHolder that will represent the array sizes. |
Permutation | Permutation that will be applied to indices when accessing the array elements. The identity permutation is used by default. |
SliceInfo | Type of the slicing configuration. |
Device | Type of the device that will be used for running operations on the array. |
Index | Type of indices used for addressing the array elements. |
Overlaps | Sequence of integers representing the overlaps in each dimension a distributed N-dimensional array. |
Allocator | Type of the allocator that will be used for allocating elements of the array. |
See also the Users' Guide.