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

Move-only RAII lease exposing mutable and const immediate TensorViews. More...

#include <access.hpp>

Public Types

using access_state_type = AccessState
 
using backend_selector_type = BackendSelector
 
using const_mdspan_type = ConstMdspan
 
using extents_type = typename mdspan_type::extents_type
 
using index_type = typename mdspan_type::index_type
 
using mdspan_type = MutableMdspan
 
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 writable mdspan.
 
mdspan_type mdspan () &&=delete
 
const_mdspan_type const & mdspan () const &
 Return the resolved read-only mdspan.
 
write_tensor_lease & operator= (write_tensor_lease &&other) noexcept
 
write_tensor_lease & operator= (write_tensor_lease const &)=delete
 
void release () noexcept
 End the access scope and make this lease inactive.
 
 write_tensor_lease (access_state_type state, mdspan_type mdspan, const_mdspan_type const_mdspan, backend_selector_type selector) noexcept
 Construct an active write lease.
 
 write_tensor_lease (write_tensor_lease &&other) noexcept
 
 write_tensor_lease (write_tensor_lease const &)=delete
 
 ~write_tensor_lease ()
 

Static Public Member Functions

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

Detailed Description

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector, class StoragePolicy>
requires std::is_const_v<typename ConstMdspan::element_type> && std::is_nothrow_move_constructible_v<MutableMdspan> && std::is_nothrow_move_constructible_v<ConstMdspan> && std::is_nothrow_move_constructible_v<BackendSelector>
class uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >

Move-only RAII lease exposing mutable and const immediate TensorViews.

A non-const lease resolves a writable mdspan. Its const interface resolves a distinct const-element mdspan, preserving ImmediateTensorView shallow-const rules.

Template Parameters
MutableMdspanWritable resolved mdspan type.
ConstMdspanRead-only resolved mdspan type.
AccessStateRAII state retaining exclusive access.
BackendSelectorBackend list copied from the source tensor view.
StoragePolicyStorage policy associated with the source tensor view.

Member Typedef Documentation

◆ access_state_type

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::access_state_type = AccessState

◆ backend_selector_type

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::backend_selector_type = BackendSelector

◆ const_mdspan_type

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::const_mdspan_type = ConstMdspan

◆ extents_type

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::extents_type = typename mdspan_type::extents_type

◆ index_type

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::index_type = typename mdspan_type::index_type

◆ mdspan_type

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::mdspan_type = MutableMdspan

◆ storage_policy

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
using uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::storage_policy = StoragePolicy

Constructor & Destructor Documentation

◆ write_tensor_lease() [1/3]

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::write_tensor_lease ( access_state_type  state,
mdspan_type  mdspan,
const_mdspan_type  const_mdspan,
backend_selector_type  selector 
)
inlinenoexcept

Construct an active write lease.

◆ write_tensor_lease() [2/3]

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::write_tensor_lease ( write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy > const &  )
delete

◆ write_tensor_lease() [3/3]

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::write_tensor_lease ( write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy > &&  other)
inlinenoexcept

◆ ~write_tensor_lease()

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::~write_tensor_lease ( )
inline

Member Function Documentation

◆ backend_selector()

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
backend_selector_type const & uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::backend_selector ( ) const
inlinenoexcept

Return the backend selector retained from the source tensor view.

◆ extent()

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
index_type uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::extent ( std::size_t  axis) const
inline

Return one resolved tensor extent.

◆ extents()

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
extents_type const & uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::extents ( ) const
inline

Return the resolved tensor extents.

◆ mdspan() [1/3]

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
mdspan_type & uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::mdspan ( ) &
inline

Return the resolved writable mdspan.

◆ mdspan() [2/3]

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
mdspan_type uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::mdspan ( ) &&
delete

◆ mdspan() [3/3]

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
const_mdspan_type const & uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::mdspan ( ) const &
inline

Return the resolved read-only mdspan.

◆ operator=() [1/2]

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
write_tensor_lease & uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::operator= ( write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy > &&  other)
inlinenoexcept

◆ operator=() [2/2]

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
write_tensor_lease & uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::operator= ( write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy > const &  )
delete

◆ rank()

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
static constexpr std::size_t uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::rank ( )
inlinestaticconstexprnoexcept

Return the static tensor rank.

◆ release()

template<MutableMdspanLike MutableMdspan, MdspanLike ConstMdspan, TensorAccessState AccessState, class BackendSelector , class StoragePolicy >
void uni20::write_tensor_lease< MutableMdspan, ConstMdspan, AccessState, BackendSelector, StoragePolicy >::release ( )
inlinenoexcept

End the access scope and make this lease inactive.

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


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