Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Namespaces | Functions | Variables
diagonal_accessor.hpp File Reference

Accessor support for compressed generalized diagonal tensors. More...

#include <uni20/core/compiler_attributes.hpp>
#include <uni20/core/types.hpp>
#include <uni20/mdspan/concepts.hpp>
#include <uni20/mdspan/generated_layout.hpp>
#include <array>
#include <cassert>
#include <concepts>
#include <cstddef>
#include <stdexcept>
#include <type_traits>
#include <utility>
Include dependency graph for diagonal_accessor.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  uni20::diagonal_accessor< ElementType, Extents >
 Mdspan accessor over a compressed rank-N generalized diagonal. More...
 
struct  uni20::diagonal_accessor< ElementType, Extents >::component_index_result
 Decoded component coordinate for one logical mapping offset. More...
 
struct  uni20::diagonal_data_handle< ElementType >
 Handle for one compressed generalized diagonal value sequence. More...
 
class  uni20::diagonal_reference< ElementType >
 Writable proxy for one structural diagonal or off-diagonal element. More...
 
struct  uni20::remove_proxy_reference< diagonal_reference< ElementType > >
 Recover the stored value type from a writable diagonal proxy. More...
 

Namespaces

namespace  uni20
 

Functions

template<class ElementType , class Extents >
requires (!std::is_const_v<ElementType>)
UNI20_HOST_DEVICE constexpr auto uni20::const_accessor (diagonal_accessor< ElementType, Extents > const &accessor)
 Convert a writable diagonal accessor to its read-only form.
 
template<class ElementType , class Extents >
requires std::is_const_v<ElementType>
UNI20_HOST_DEVICE constexpr auto uni20::const_accessor (diagonal_accessor< ElementType, Extents > const &accessor)
 Return an already read-only diagonal accessor unchanged.
 
template<class ElementType , class Extents , class LayoutPolicy , class AccessorExtents >
requires (Extents::rank() == AccessorExtents::rank())
constexpr auto uni20::diagonal_components (stdex::mdspan< ElementType, Extents, LayoutPolicy, diagonal_accessor< ElementType, AccessorExtents > > const &span)
 Expose the physically stored values of a generalized-diagonal mdspan.
 
template<class Extents , class Components >
requires RankedStridedMdspanLike<Components, 1> && DefaultAccessorMdspanLike<Components>
constexpr auto uni20::make_diagonal_mdspan (Extents logical_extents, Components const &components)
 Present rank-one strided components as a full generalized-diagonal mdspan.
 

Variables

template<class ElementType , class Extents >
constexpr bool uni20::enable_accessor_in_domain< diagonal_accessor< ElementType, Extents >, host_access_domain > = true
 Diagonal accessors may be evaluated by ordinary host code.
 

Detailed Description

Accessor support for compressed generalized diagonal tensors.