Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | List of all members
uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy > Class Template Reference

Move-only RAII lease exposing a read-only ImmediateTensorView. More...

#include <access.hpp>

Public Types

using access_state_type = AccessState
 
using backend_selector_type = BackendSelector
 
using extents_type = typename mdspan_type::extents_type
 
using index_type = typename mdspan_type::index_type
 
using mdspan_type = Mdspan
 
using storage_policy = StoragePolicy
 

Public Member Functions

backend_selector_type const & backend_selector () const noexcept
 Return the backend selector retained from the source tensor view.
 
index_type extent (std::size_t axis) const
 Return one resolved tensor extent.
 
extents_type const & extents () const
 Return the resolved tensor extents.
 
mdspan_type & mdspan () &
 Return the resolved read-only mdspan.
 
mdspan_type mdspan () &&=delete
 
mdspan_type const & mdspan () const &
 Return the resolved read-only mdspan.
 
read_tensor_lease & operator= (read_tensor_lease &&other) noexcept
 
read_tensor_lease & operator= (read_tensor_lease const &)=delete
 
 read_tensor_lease (access_state_type state, mdspan_type mdspan, backend_selector_type selector) noexcept
 Construct an active read lease.
 
 read_tensor_lease (read_tensor_lease &&other) noexcept
 
 read_tensor_lease (read_tensor_lease const &)=delete
 
void release () noexcept
 End the access scope and make this lease inactive.
 
decltype(auto) storage () const
 Return the storage retained by access state when it exposes one.
 
 ~read_tensor_lease ()
 

Static Public Member Functions

static constexpr std::size_t rank () noexcept
 Return the static tensor rank.
 

Detailed Description

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector, class StoragePolicy>
requires std::is_const_v<typename Mdspan::element_type> && std::is_nothrow_move_constructible_v<Mdspan> && std::is_nothrow_move_constructible_v<BackendSelector>
class uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >

Move-only RAII lease exposing a read-only ImmediateTensorView.

The access state is stored before the mdspan so the mdspan is destroyed before the state that makes its data handle usable. Independent lease types may model ReadTensorLease without using this class template.

Template Parameters
MdspanRead-only resolved mdspan type.
AccessStateRAII state retaining the acquired data handle.
BackendSelectorBackend list copied from the source tensor view.
StoragePolicyStorage policy associated with the source tensor view.

Member Typedef Documentation

◆ access_state_type

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::access_state_type = AccessState

◆ backend_selector_type

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::backend_selector_type = BackendSelector

◆ extents_type

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::extents_type = typename mdspan_type::extents_type

◆ index_type

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::index_type = typename mdspan_type::index_type

◆ mdspan_type

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::mdspan_type = Mdspan

◆ storage_policy

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::storage_policy = StoragePolicy

Constructor & Destructor Documentation

◆ read_tensor_lease() [1/3]

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::read_tensor_lease ( access_state_type  state,
mdspan_type  mdspan,
backend_selector_type  selector 
)
inlinenoexcept

Construct an active read lease.

◆ read_tensor_lease() [2/3]

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::read_tensor_lease ( read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy > const &  )
delete

◆ read_tensor_lease() [3/3]

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::read_tensor_lease ( read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy > &&  other)
inlinenoexcept

◆ ~read_tensor_lease()

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::~read_tensor_lease ( )
inline

Member Function Documentation

◆ backend_selector()

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
backend_selector_type const & uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::backend_selector ( ) const
inlinenoexcept

Return the backend selector retained from the source tensor view.

◆ extent()

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
index_type uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::extent ( std::size_t  axis) const
inline

Return one resolved tensor extent.

◆ extents()

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
extents_type const & uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::extents ( ) const
inline

Return the resolved tensor extents.

◆ mdspan() [1/3]

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
mdspan_type & uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::mdspan ( ) &
inline

Return the resolved read-only mdspan.

◆ mdspan() [2/3]

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
mdspan_type uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::mdspan ( ) &&
delete

◆ mdspan() [3/3]

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
mdspan_type const & uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::mdspan ( ) const &
inline

Return the resolved read-only mdspan.

◆ operator=() [1/2]

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
read_tensor_lease & uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::operator= ( read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy > &&  other)
inlinenoexcept

◆ operator=() [2/2]

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
read_tensor_lease & uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::operator= ( read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy > const &  )
delete

◆ rank()

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
static constexpr std::size_t uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::rank ( )
inlinestaticconstexprnoexcept

Return the static tensor rank.

◆ release()

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
void uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::release ( )
inlinenoexcept

End the access scope and make this lease inactive.

Invalidates the resolved mdspan before releasing the access state. Repeated calls have no effect.

◆ storage()

template<MdspanLike Mdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
decltype(auto) uni20::read_tensor_lease< Mdspan, AccessState, BackendSelector, StoragePolicy >::storage ( ) const
inline

Return the storage retained by access state when it exposes one.


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