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

Compact affine iteration plan shared by host and device backends. More...

#include <iteration_plan.hpp>

Collaboration diagram for uni20::multi_iteration_plan< OperandCount, MaximumRank >:
[legend]

Public Member Functions

bool empty () const noexcept
 Report whether the logical iteration space is empty.
 
std::size_t rank () const noexcept
 Report the compact rank after size-one elimination and coalescing.
 

Public Attributes

std::array< std::ptrdiff_t, OperandCount > base_offsets {}
 
static_vector< extent_strides< OperandCount >, MaximumRank > dimensions
 
std::size_t element_count = 1
 
std::array< iteration_offset_range, OperandCount > reachable_offsets {}
 
bool representable = true
 

Static Public Attributes

static constexpr std::size_t maximum_rank = MaximumRank
 
static constexpr std::size_t operand_count = OperandCount
 

Detailed Description

template<std::size_t OperandCount, std::size_t MaximumRank>
struct uni20::multi_iteration_plan< OperandCount, MaximumRank >

Compact affine iteration plan shared by host and device backends.

Template Parameters
OperandCountNumber of operands, with the writable output first.
MaximumRankMaximum number of compact dimensions.

Member Function Documentation

◆ empty()

template<std::size_t OperandCount, std::size_t MaximumRank>
bool uni20::multi_iteration_plan< OperandCount, MaximumRank >::empty ( ) const
inlinenoexcept

Report whether the logical iteration space is empty.

◆ rank()

template<std::size_t OperandCount, std::size_t MaximumRank>
std::size_t uni20::multi_iteration_plan< OperandCount, MaximumRank >::rank ( ) const
inlinenoexcept

Report the compact rank after size-one elimination and coalescing.

Member Data Documentation

◆ base_offsets

template<std::size_t OperandCount, std::size_t MaximumRank>
std::array<std::ptrdiff_t, OperandCount> uni20::multi_iteration_plan< OperandCount, MaximumRank >::base_offsets {}

◆ dimensions

template<std::size_t OperandCount, std::size_t MaximumRank>
static_vector<extent_strides<OperandCount>, MaximumRank> uni20::multi_iteration_plan< OperandCount, MaximumRank >::dimensions

◆ element_count

template<std::size_t OperandCount, std::size_t MaximumRank>
std::size_t uni20::multi_iteration_plan< OperandCount, MaximumRank >::element_count = 1

◆ maximum_rank

template<std::size_t OperandCount, std::size_t MaximumRank>
constexpr std::size_t uni20::multi_iteration_plan< OperandCount, MaximumRank >::maximum_rank = MaximumRank
staticconstexpr

◆ operand_count

template<std::size_t OperandCount, std::size_t MaximumRank>
constexpr std::size_t uni20::multi_iteration_plan< OperandCount, MaximumRank >::operand_count = OperandCount
staticconstexpr

◆ reachable_offsets

template<std::size_t OperandCount, std::size_t MaximumRank>
std::array<iteration_offset_range, OperandCount> uni20::multi_iteration_plan< OperandCount, MaximumRank >::reachable_offsets {}

◆ representable

template<std::size_t OperandCount, std::size_t MaximumRank>
bool uni20::multi_iteration_plan< OperandCount, MaximumRank >::representable = true

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