Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
uni20::PackedCompleteBlockStorage< LeafStorage, BlockAlignment > Struct Template Reference

Complete storage packing every symmetry-legal dense block into one leaf buffer. More...

#include <block_tensor_storage.hpp>

Public Types

using backend_selector_type = typename leaf_storage_policy::backend_selector_type
 
using block_execution_policy = SerialBlockExecution
 
using leaf_storage_policy = LeafStorage
 
template<typename T , std::size_t KeyCoordinateCount, std::size_t DenseBlockOrder>
using storage_t = detail::PackedBlockStorageData< T, KeyCoordinateCount, DenseBlockOrder, leaf_storage_policy, BlockAlignment >
 

Static Public Member Functions

static constexpr auto backend_selector () noexcept -> backend_selector_type
 

Static Public Attributes

static constexpr bool is_distributed = false
 
static constexpr bool stores_all_legal_blocks = true
 

Detailed Description

template<class LeafStorage = HostStorage, std::size_t BlockAlignment = 1>
struct uni20::PackedCompleteBlockStorage< LeafStorage, BlockAlignment >

Complete storage packing every symmetry-legal dense block into one leaf buffer.

The owning BlockTensor determines the canonical legal-key set from its boundaries. Fixed packed offsets make block placement stable for the lifetime of the tensor. A BlockAlignment greater than one pads block starts to that byte alignment.

Template Parameters
LeafStorageTensor storage policy used by the packed buffer.
BlockAlignmentRequired byte alignment of every block start.

Member Typedef Documentation

◆ backend_selector_type

template<class LeafStorage = HostStorage, std::size_t BlockAlignment = 1>
using uni20::PackedCompleteBlockStorage< LeafStorage, BlockAlignment >::backend_selector_type = typename leaf_storage_policy::backend_selector_type

◆ block_execution_policy

template<class LeafStorage = HostStorage, std::size_t BlockAlignment = 1>
using uni20::PackedCompleteBlockStorage< LeafStorage, BlockAlignment >::block_execution_policy = SerialBlockExecution

◆ leaf_storage_policy

template<class LeafStorage = HostStorage, std::size_t BlockAlignment = 1>
using uni20::PackedCompleteBlockStorage< LeafStorage, BlockAlignment >::leaf_storage_policy = LeafStorage

◆ storage_t

template<class LeafStorage = HostStorage, std::size_t BlockAlignment = 1>
template<typename T , std::size_t KeyCoordinateCount, std::size_t DenseBlockOrder>
using uni20::PackedCompleteBlockStorage< LeafStorage, BlockAlignment >::storage_t = detail::PackedBlockStorageData<T, KeyCoordinateCount, DenseBlockOrder, leaf_storage_policy, BlockAlignment>

Member Function Documentation

◆ backend_selector()

template<class LeafStorage = HostStorage, std::size_t BlockAlignment = 1>
static constexpr auto uni20::PackedCompleteBlockStorage< LeafStorage, BlockAlignment >::backend_selector ( ) -> backend_selector_type
inlinestaticconstexprnoexcept

Member Data Documentation

◆ is_distributed

template<class LeafStorage = HostStorage, std::size_t BlockAlignment = 1>
constexpr bool uni20::PackedCompleteBlockStorage< LeafStorage, BlockAlignment >::is_distributed = false
staticconstexpr

◆ stores_all_legal_blocks

template<class LeafStorage = HostStorage, std::size_t BlockAlignment = 1>
constexpr bool uni20::PackedCompleteBlockStorage< LeafStorage, BlockAlignment >::stores_all_legal_blocks = true
staticconstexpr

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