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

Sparse storage packing every stored 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 = false
 

Detailed Description

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

Sparse storage packing every stored dense block into one leaf buffer.

A BlockAlignment greater than one pads block starts to that byte alignment while preserving a single allocation.

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::PackedSparseBlockStorage< 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::PackedSparseBlockStorage< LeafStorage, BlockAlignment >::block_execution_policy = SerialBlockExecution

◆ leaf_storage_policy

template<class LeafStorage = HostStorage, std::size_t BlockAlignment = 1>
using uni20::PackedSparseBlockStorage< 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::PackedSparseBlockStorage< 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::PackedSparseBlockStorage< 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::PackedSparseBlockStorage< LeafStorage, BlockAlignment >::is_distributed = false
staticconstexpr

◆ stores_all_legal_blocks

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

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