Tatooine
Public Types | Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder > Struct Template Reference

#include <chunked_multidim_array.h>

Inheritance diagram for tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >:
[legend]
Collaboration diagram for tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >:
[legend]

Public Types

using value_type = T
 
using parent_type = dynamic_multidim_size< GlobalIndexOrder >
 
using this_type = chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >
 
using chunk_t = dynamic_multidim_array< T, LocalIndexOrder >
 
using chunk_ptr_t = std::unique_ptr< chunk_t >
 
using chunk_ptr_field_t = std::vector< chunk_ptr_t >
 
using global_index_order_t = GlobalIndexOrder
 
using local_index_order_t = LocalIndexOrder
 
- Public Types inherited from tatooine::dynamic_multidim_size< IndexOrder >
using this_type = dynamic_multidim_size< IndexOrder >
 
using index_order_type = IndexOrder
 

Public Member Functions

 chunked_multidim_array (chunked_multidim_array const &other)
 
template<range SizeRange, range ChunkSizeRange>
requires (is_integral<typename std::decay_t<SizeRange>::value_type>) && (is_integral<typename std::decay_t<ChunkSizeRange>::value_type>)
 chunked_multidim_array (SizeRange &&size, ChunkSizeRange &&chunk_size)
 
template<range Range>
 chunked_multidim_array (Range &&data, std::vector< std::size_t > const &size, std::vector< std::size_t > const &chunk_size)
 
template<can_read< this_type > Reader>
 chunked_multidim_array (Reader &&reader, std::vector< std::size_t > const &chunk_size)
 
template<range SizeRange>
auto resize (SizeRange &&size) -> void requires(is_integral< typename std::decay_t< SizeRange >::value_type >)
 
template<range SizeRange, range ChunkSizeRange>
requires integral<tatooine::value_type<std::decay_t<SizeRange>>> && integral<tatooine::value_type<std::decay_t<ChunkSizeRange>>>
auto resize (SizeRange &&size, ChunkSizeRange &&chunk_size)
 
auto resize (integral auto const ... sizes) -> void
 
template<typename Tensor , integral Int, std::size_t N>
auto resize (base_tensor< Tensor, Int, N > const &v) -> void
 
template<integral Int, std::size_t N>
auto resize (std::array< Int, N > const &v)
 
auto plain_internal_chunk_index_from_global_indices (std::size_t plain_chunk_index, integral auto const ... is) const
 
auto plain_chunk_index_from_global_indices (integral auto const ... is) const
 
auto internal_chunk_indices_from_global_indices (integral auto const ... is) const
 
template<integral Int>
auto internal_chunk_indices_from_global_indices (std::vector< Int > is) const
 
auto chunk_indices_from_global_indices (integral auto const ... is) const
 
template<integral Int>
auto chunk_indices_from_global_indices (std::vector< Int > is) const
 
template<integral Int>
auto global_indices_from_chunk_indices (std::vector< Int > is) const
 
auto plain_chunk_index_from_chunk_indices (integral auto const ... chunk_indices) const
 
template<integral Int>
auto plain_chunk_index_from_chunk_indices (std::vector< Int > const &chunk_indices) const
 
auto chunk_at (integral auto const chunk_index0, integral auto const ... chunk_indices) const -> auto const &
 
auto chunk_at_is_null (integral auto const chunk_index0, integral auto const ... chunk_indices) const
 
auto create_all_chunks () const -> void
 
auto create_chunk_at (std::size_t const plain_chunk_index, std::vector< std::size_t > const &multi_indices) const -> auto const &
 
auto create_chunk_at (std::size_t const plain_chunk_index) const -> auto const &
 
auto create_chunk_at (integral auto const chunk_index0, integral auto const chunk_index1, integral auto const ... chunk_indices) const -> auto const &
 
auto destroy_chunk_at (integral auto const chunk_index0, integral auto const ... chunk_indices) const
 
auto copy_chunks (chunked_multidim_array const &other) -> void
 
auto clear ()
 
auto num_chunks () const
 
auto chunk_size () const
 
auto chunk_size (std::size_t i) const
 
auto internal_chunk_size () const
 
auto internal_chunk_size (std::size_t const i) const
 
auto operator[] (std::size_t plain_index) -> T &
 
auto operator[] (std::size_t plain_index) const -> T const &
 
auto at (integral auto const ... is) -> T &
 
auto at (integral auto const ... is) const -> T const &
 
template<typename Tensor , std::size_t N, integral S>
auto at (base_tensor< Tensor, S, N > const &is) -> T &
 
template<integral S, std::size_t N>
auto at (std::array< S, N > const &is) -> T &
 
template<integral S>
auto at (std::vector< S > const &is) -> T &
 
template<integral S>
auto at (std::vector< S > const &is) const -> T const &
 
auto operator() (integral auto const ... is) -> T &
 
auto operator() (integral auto const ... is) const -> T const &
 
template<typename Tensor , std::size_t N, integral S>
auto operator() (base_tensor< Tensor, S, N > const &is) -> T &
 
template<integral S, std::size_t N>
auto operator() (std::array< S, N > const &is) -> T &
 
template<integral S, std::size_t N>
auto operator() (std::array< S, N > const &is) const -> T const &
 
template<integral S, std::size_t N>
auto at (std::array< S, N > const &is) const -> T const &
 
template<typename RandomEngine = std::mt19937_64>
requires is_arithmetic<T>
auto randu (T min=0, T max=1, RandomEngine &&random_engine=RandomEngine{std::random_device{}()}) -> void
 
auto min_value () const
 
auto max_value () const
 
auto minmax_value () const
 
auto normalize () -> void
 
template<typename Iteration >
auto iterate_over_indices (Iteration &&iteration) const
 
auto constexpr in_range (integral auto const ... indices) const
 
auto constexpr in_range (integral_range auto const &indices) const
 
auto constexpr multi_index (std::size_t const gi) const
 
auto num_components () const
 
auto num_dimensions () const
 
auto size () const -> auto const &
 
auto size (std::size_t const i) const
 
- Public Member Functions inherited from tatooine::dynamic_multidim_size< IndexOrder >
 dynamic_multidim_size ()=default
 
 dynamic_multidim_size (dynamic_multidim_size const &other)=default
 
 dynamic_multidim_size (dynamic_multidim_size &&other) noexcept=default
 
auto operator= (dynamic_multidim_size const &other) -> dynamic_multidim_size &=default
 
auto operator= (dynamic_multidim_size &&other) noexcept -> dynamic_multidim_size &=default
 
 ~dynamic_multidim_size ()=default
 
template<typename OtherIndexing >
 dynamic_multidim_size (dynamic_multidim_size< OtherIndexing > const &other)
 
template<typename OtherIndexing >
 dynamic_multidim_size (dynamic_multidim_size< OtherIndexing > &&other)
 
template<typename OtherIndexing >
auto operator= (dynamic_multidim_size< OtherIndexing > const &other) -> dynamic_multidim_size &
 
template<typename OtherIndexing >
auto operator= (dynamic_multidim_size< OtherIndexing > &&other) -> dynamic_multidim_size &
 
 dynamic_multidim_size (integral auto const ... size)
 
 dynamic_multidim_size (std::vector< std::size_t > &&size)
 
 dynamic_multidim_size (integral_range auto const &size)
 
template<typename OtherIndexing >
auto operator== (dynamic_multidim_size< OtherIndexing > const &other) const
 
template<typename OtherIndexing >
auto operator!= (dynamic_multidim_size< OtherIndexing > const &other) const
 
auto num_dimensions () const
 
auto size () const -> auto const &
 
auto size (std::size_t const i) const
 
auto num_components () const
 
auto resize (integral auto const ... size) -> void
 
auto resize (integral_range auto const &size) -> void
 
auto resize (std::vector< std::size_t > &&size) -> void
 
auto resize (std::vector< std::size_t > const &size) -> void
 
auto constexpr in_range (integral auto const ... indices) const
 
auto constexpr in_range (integral_range auto const &indices) const
 
auto constexpr plain_index (integral auto const ... indices) const
 
auto constexpr plain_index (integral_range auto const &indices) const
 
auto constexpr multi_index (std::size_t const gi) const
 
auto begin_indices () const
 
auto end_indices () const
 
auto indices () const
 

Protected Attributes

chunk_ptr_field_t m_chunks
 

Private Member Functions

template<std::size_t... Seq>
auto plain_internal_chunk_index_from_global_indices (std::size_t plain_chunk_index, std::index_sequence< Seq... >, integral auto const ... is) const
 
template<std::size_t... Seq>
auto plain_chunk_index_from_global_indices (std::index_sequence< Seq... >, integral auto const ... is) const
 
template<std::size_t... Seq>
auto internal_chunk_indices_from_global_indices (std::index_sequence< Seq... >, integral auto const ... is) const
 
template<std::size_t... Seq>
auto chunk_indices_from_global_indices (std::index_sequence< Seq... >, integral auto const ... is) const
 

Private Attributes

std::vector< std::size_t > m_internal_chunk_size
 
dynamic_multidim_size< LocalIndexOrder > m_chunk_structure
 

Member Typedef Documentation

◆ chunk_ptr_field_t

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
using tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_ptr_field_t = std::vector<chunk_ptr_t>

◆ chunk_ptr_t

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
using tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_ptr_t = std::unique_ptr<chunk_t>

◆ chunk_t

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
using tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_t = dynamic_multidim_array<T, LocalIndexOrder>

◆ global_index_order_t

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
using tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::global_index_order_t = GlobalIndexOrder

◆ local_index_order_t

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
using tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::local_index_order_t = LocalIndexOrder

◆ parent_type

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
using tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::parent_type = dynamic_multidim_size<GlobalIndexOrder>

◆ this_type

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
using tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::this_type = chunked_multidim_array<T, GlobalIndexOrder, LocalIndexOrder>

◆ value_type

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
using tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::value_type = T

Constructor & Destructor Documentation

◆ chunked_multidim_array() [1/4]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunked_multidim_array ( chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder > const &  other)
inline

◆ chunked_multidim_array() [2/4]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<range SizeRange, range ChunkSizeRange>
requires (is_integral<typename std::decay_t<SizeRange>::value_type>) && (is_integral<typename std::decay_t<ChunkSizeRange>::value_type>)
tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunked_multidim_array ( SizeRange &&  size,
ChunkSizeRange &&  chunk_size 
)
inline

◆ chunked_multidim_array() [3/4]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<range Range>
tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunked_multidim_array ( Range &&  data,
std::vector< std::size_t > const &  size,
std::vector< std::size_t > const &  chunk_size 
)
inline

◆ chunked_multidim_array() [4/4]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<can_read< this_type > Reader>
tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunked_multidim_array ( Reader &&  reader,
std::vector< std::size_t > const &  chunk_size 
)
inline

Member Function Documentation

◆ at() [1/7]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<typename Tensor , std::size_t N, integral S>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::at ( base_tensor< Tensor, S, N > const &  is) -> T&
inline

◆ at() [2/7]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::at ( integral auto const ...  is) -> T&
inline

◆ at() [3/7]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::at ( integral auto const ...  is) const -> T const&
inline

◆ at() [4/7]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral S, std::size_t N>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::at ( std::array< S, N > const &  is) -> T&
inline

◆ at() [5/7]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral S, std::size_t N>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::at ( std::array< S, N > const &  is) const -> T const&
inline

◆ at() [6/7]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral S>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::at ( std::vector< S > const &  is) -> T&
inline

◆ at() [7/7]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral S>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::at ( std::vector< S > const &  is) const -> T const&
inline

◆ chunk_at()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_at ( integral auto const  chunk_index0,
integral auto const ...  chunk_indices 
) const -> auto const&
inline

◆ chunk_at_is_null()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_at_is_null ( integral auto const  chunk_index0,
integral auto const ...  chunk_indices 
) const
inline

◆ chunk_indices_from_global_indices() [1/3]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_indices_from_global_indices ( integral auto const ...  is) const
inline

◆ chunk_indices_from_global_indices() [2/3]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<std::size_t... Seq>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_indices_from_global_indices ( std::index_sequence< Seq... >  ,
integral auto const ...  is 
) const
inlineprivate

◆ chunk_indices_from_global_indices() [3/3]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral Int>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_indices_from_global_indices ( std::vector< Int >  is) const
inline

◆ chunk_size() [1/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_size ( ) const
inline

◆ chunk_size() [2/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::chunk_size ( std::size_t  i) const
inline

◆ clear()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::clear ( )
inline

◆ copy_chunks()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::copy_chunks ( chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder > const &  other) -> void
inline

◆ create_all_chunks()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::create_all_chunks ( ) const -> void
inline

◆ create_chunk_at() [1/3]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::create_chunk_at ( integral auto const  chunk_index0,
integral auto const  chunk_index1,
integral auto const ...  chunk_indices 
) const -> auto const&
inline

◆ create_chunk_at() [2/3]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::create_chunk_at ( std::size_t const  plain_chunk_index) const -> auto const&
inline

◆ create_chunk_at() [3/3]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::create_chunk_at ( std::size_t const  plain_chunk_index,
std::vector< std::size_t > const &  multi_indices 
) const -> auto const&
inline

◆ destroy_chunk_at()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::destroy_chunk_at ( integral auto const  chunk_index0,
integral auto const ...  chunk_indices 
) const
inline

◆ global_indices_from_chunk_indices()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral Int>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::global_indices_from_chunk_indices ( std::vector< Int >  is) const
inline

◆ in_range() [1/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto constexpr tatooine::dynamic_multidim_size< IndexOrder >::in_range ( integral auto const ...  indices) const
inlineconstexpr

◆ in_range() [2/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto constexpr tatooine::dynamic_multidim_size< IndexOrder >::in_range ( integral_range auto const &  indices) const
inlineconstexpr

◆ internal_chunk_indices_from_global_indices() [1/3]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::internal_chunk_indices_from_global_indices ( integral auto const ...  is) const
inline

◆ internal_chunk_indices_from_global_indices() [2/3]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<std::size_t... Seq>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::internal_chunk_indices_from_global_indices ( std::index_sequence< Seq... >  ,
integral auto const ...  is 
) const
inlineprivate

◆ internal_chunk_indices_from_global_indices() [3/3]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral Int>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::internal_chunk_indices_from_global_indices ( std::vector< Int >  is) const
inline

◆ internal_chunk_size() [1/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::internal_chunk_size ( ) const
inline

◆ internal_chunk_size() [2/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::internal_chunk_size ( std::size_t const  i) const
inline

◆ iterate_over_indices()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<typename Iteration >
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::iterate_over_indices ( Iteration &&  iteration) const
inline

Iterates over indices so that coherent chunk indices are being processed together.

◆ max_value()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::max_value ( ) const
inline

◆ min_value()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::min_value ( ) const
inline

◆ minmax_value()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::minmax_value ( ) const
inline

◆ multi_index()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto constexpr tatooine::dynamic_multidim_size< IndexOrder >::multi_index ( std::size_t const  gi) const
inlineconstexpr

◆ normalize()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::normalize ( ) -> void
inline

◆ num_chunks()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::num_chunks ( ) const
inline

◆ num_components()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::dynamic_multidim_size< IndexOrder >::num_components ( ) const
inline

◆ num_dimensions()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::dynamic_multidim_size< IndexOrder >::num_dimensions ( ) const
inline

◆ operator()() [1/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<typename Tensor , std::size_t N, integral S>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::operator() ( base_tensor< Tensor, S, N > const &  is) -> T&
inline

◆ operator()() [2/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::operator() ( integral auto const ...  is) -> T&
inline

◆ operator()() [3/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::operator() ( integral auto const ...  is) const -> T const&
inline

◆ operator()() [4/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral S, std::size_t N>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::operator() ( std::array< S, N > const &  is) -> T&
inline

◆ operator()() [5/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral S, std::size_t N>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::operator() ( std::array< S, N > const &  is) const -> T const&
inline

◆ operator[]() [1/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::operator[] ( std::size_t  plain_index) -> T&
inline

◆ operator[]() [2/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::operator[] ( std::size_t  plain_index) const -> T const&
inline

◆ plain_chunk_index_from_chunk_indices() [1/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::plain_chunk_index_from_chunk_indices ( integral auto const ...  chunk_indices) const
inline

◆ plain_chunk_index_from_chunk_indices() [2/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral Int>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::plain_chunk_index_from_chunk_indices ( std::vector< Int > const &  chunk_indices) const
inline

◆ plain_chunk_index_from_global_indices() [1/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::plain_chunk_index_from_global_indices ( integral auto const ...  is) const
inline

◆ plain_chunk_index_from_global_indices() [2/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<std::size_t... Seq>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::plain_chunk_index_from_global_indices ( std::index_sequence< Seq... >  ,
integral auto const ...  is 
) const
inlineprivate

◆ plain_internal_chunk_index_from_global_indices() [1/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::plain_internal_chunk_index_from_global_indices ( std::size_t  plain_chunk_index,
integral auto const ...  is 
) const
inline

◆ plain_internal_chunk_index_from_global_indices() [2/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<std::size_t... Seq>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::plain_internal_chunk_index_from_global_indices ( std::size_t  plain_chunk_index,
std::index_sequence< Seq... >  ,
integral auto const ...  is 
) const
inlineprivate

◆ randu()

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<typename RandomEngine = std::mt19937_64>
requires is_arithmetic<T>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::randu ( min = 0,
max = 1,
RandomEngine &&  random_engine = RandomEngine{std::random_device{}()} 
) -> void
inline

◆ resize() [1/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<typename Tensor , integral Int, std::size_t N>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::resize ( base_tensor< Tensor, Int, N > const &  v) -> void
inline

◆ resize() [2/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::resize ( integral auto const ...  sizes) -> void
inline

◆ resize() [3/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<range SizeRange>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::resize ( SizeRange &&  size) -> void requires( is_integral<typename std::decay_t<SizeRange>::value_type>)
inline

◆ resize() [4/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<range SizeRange, range ChunkSizeRange>
requires integral<tatooine::value_type<std::decay_t<SizeRange>>> && integral<tatooine::value_type<std::decay_t<ChunkSizeRange>>>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::resize ( SizeRange &&  size,
ChunkSizeRange &&  chunk_size 
)
inline

◆ resize() [5/5]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
template<integral Int, std::size_t N>
auto tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::resize ( std::array< Int, N > const &  v)
inline

◆ size() [1/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::dynamic_multidim_size< IndexOrder >::size ( ) const -> auto const&
inline

◆ size() [2/2]

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
auto tatooine::dynamic_multidim_size< IndexOrder >::size ( std::size_t const  i) const
inline
Returns
size of dimensions i

Member Data Documentation

◆ m_chunk_structure

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
dynamic_multidim_size<LocalIndexOrder> tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::m_chunk_structure
private

◆ m_chunks

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
chunk_ptr_field_t tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::m_chunks
mutableprotected

◆ m_internal_chunk_size

template<typename T , typename GlobalIndexOrder = x_fastest, typename LocalIndexOrder = GlobalIndexOrder>
std::vector<std::size_t> tatooine::chunked_multidim_array< T, GlobalIndexOrder, LocalIndexOrder >::m_internal_chunk_size
private

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