AI Engine API User Guide (AIE-API) 2024.1
Loading...
Searching...
No Matches
aie_types.hpp File Reference

Detailed Description

Types exposed to users.

#include "types.hpp"
#include "detail/accum.hpp"
#include "detail/lock.hpp"
#include "detail/mdspan.hpp"
#include "detail/sync_buffer.hpp"
#include "detail/tiled_mdspan.hpp"
#include "detail/vector.hpp"

Classes

struct  aie::tile_id
 Identifies a particular tile within the AIE array. More...
 

Namespaces

namespace  aie
 Base namespace for AIE operations and types.
 
namespace  aie::sync
 

Macros

#define __AIE_API_AIE_TYPES__HPP__
 

Typedefs

using aie::AccumClass = detail::AccumClass
 
using aie::sync::adopt_lock_t = detail::adopt_lock_t
 
template<typename Span , unsigned NumBuffers = 2, unsigned NumReaders = 1, unsigned NumWriters = 1>
using aie::sync::buffered_input = detail::sync::input< Span, NumBuffers >
 
template<typename Span , unsigned NumBuffers = 2, unsigned NumReaders = 1, unsigned NumWriters = 1>
using aie::sync::buffered_output = detail::sync::output< Span, NumBuffers >
 
template<unsigned MinAccumBits, unsigned Elems>
using aie::cfp_accum = accum< detail::accum_tag_t< AccumClass::CFP, detail::to_native_accum_bits< AccumClass::CFP, MinAccumBits >()>, Elems >
 
template<unsigned MinAccumBits, unsigned Elems>
using aie::cint_accum = accum< detail::accum_tag_t< AccumClass::CInt, detail::to_native_accum_bits< AccumClass::CInt, MinAccumBits >()>, Elems >
 
template<unsigned NumReaders = 1, unsigned NumWriters = 1>
using aie::sync::consumer_lock = detail::consumer_lock< NumReaders, NumWriters >
 
template<unsigned NumReaders = 1, unsigned NumWriters = 1>
using aie::sync::consumer_sem = detail::consumer_sem< NumReaders, NumWriters >
 
template<size_t... Extents>
using aie::extents = detail::extents< Extents... >
 
template<unsigned MinAccumBits, unsigned Elems>
using aie::fp_accum = accum< detail::accum_tag_t< AccumClass::FP, detail::to_native_accum_bits< AccumClass::FP, MinAccumBits >()>, Elems >
 
template<unsigned MinAccumBits, unsigned Elems>
using aie::int_accum = accum< detail::accum_tag_t< AccumClass::Int, detail::to_native_accum_bits< AccumClass::Int, MinAccumBits >()>, Elems >
 
template<typename T , size_t... Extents>
using aie::mdspan = detail::basic_mdspan< T, extents< Extents... >, void, detail::accessor_basic< T > >
 
using aie::sync::mutex = detail::mutex
 
template<unsigned NumReaders = 1, unsigned NumWriters = 1>
using aie::sync::producer_lock = detail::producer_lock< NumReaders, NumWriters >
 
template<unsigned NumReaders = 1, unsigned NumWriters = 1>
using aie::sync::producer_sem = detail::producer_sem< NumReaders, NumWriters >
 
template<typename T , size_t... Extents>
using aie::restrict_mdspan = detail::basic_mdspan< T, extents< Extents... >, void, detail::accessor_restrict< T > >
 
template<typename T , size_t Extents1 = dynamic_extent>
using aie::restrict_span = restrict_span_1d< T, Extents1 >
 
template<typename T , size_t Extents1 = dynamic_extent>
using aie::restrict_span_1d = restrict_mdspan< T, Extents1 >
 
template<typename T , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent>
using aie::restrict_span_2d = restrict_mdspan< T, Extents1, Extents2 >
 
template<typename T , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent, size_t Extents3 = dynamic_extent>
using aie::restrict_span_3d = restrict_mdspan< T, Extents1, Extents2, Extents3 >
 
template<typename T , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent, size_t Extents3 = dynamic_extent, size_t Extents4 = dynamic_extent>
using aie::restrict_span_4d = restrict_mdspan< T, Extents1, Extents2, Extents3, Extents4 >
 
template<typename T , typename TileExtents , size_t... Extents>
using aie::restrict_tiled_mdspan = detail::basic_tiled_mdspan< T, TileExtents, extents< Extents... >, void, detail::accessor_restrict< T > >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent>
using aie::restrict_tiled_span = tiled_span_1d< T, TileExtents, Extents1 >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent>
using aie::restrict_tiled_span_1d = tiled_mdspan< T, TileExtents, Extents1 >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent>
using aie::restrict_tiled_span_2d = tiled_mdspan< T, TileExtents, Extents1, Extents2 >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent, size_t Extents3 = dynamic_extent>
using aie::restrict_tiled_span_3d = tiled_mdspan< T, TileExtents, Extents1, Extents2, Extents3 >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent, size_t Extents3 = dynamic_extent, size_t Extents4 = dynamic_extent>
using aie::restrict_tiled_span_4d = tiled_mdspan< T, TileExtents, Extents1, Extents2, Extents3, Extents4 >
 
using aie::sync::scoped_lock = detail::scoped_lock
 
template<typename T , size_t Extents1 = dynamic_extent>
using aie::span = span_1d< T, Extents1 >
 
template<typename T , size_t Extents1 = dynamic_extent>
using aie::span_1d = mdspan< T, Extents1 >
 
template<typename T , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent>
using aie::span_2d = mdspan< T, Extents1, Extents2 >
 
template<typename T , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent, size_t Extents3 = dynamic_extent>
using aie::span_3d = mdspan< T, Extents1, Extents2, Extents3 >
 
template<typename T , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent, size_t Extents3 = dynamic_extent, size_t Extents4 = dynamic_extent>
using aie::span_4d = mdspan< T, Extents1, Extents2, Extents3, Extents4 >
 
template<typename T , typename TileExtents , size_t... Extents>
using aie::tiled_mdspan = detail::basic_tiled_mdspan< T, TileExtents, extents< Extents... >, void, detail::accessor_basic< T > >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent>
using aie::tiled_span = tiled_span_1d< T, TileExtents, Extents1 >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent>
using aie::tiled_span_1d = tiled_mdspan< T, TileExtents, Extents1 >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent>
using aie::tiled_span_2d = tiled_mdspan< T, TileExtents, Extents1, Extents2 >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent, size_t Extents3 = dynamic_extent>
using aie::tiled_span_3d = tiled_mdspan< T, TileExtents, Extents1, Extents2, Extents3 >
 
template<typename T , typename TileExtents , size_t Extents1 = dynamic_extent, size_t Extents2 = dynamic_extent, size_t Extents3 = dynamic_extent, size_t Extents4 = dynamic_extent>
using aie::tiled_span_4d = tiled_mdspan< T, TileExtents, Extents1, Extents2, Extents3, Extents4 >
 

Enumerations

enum class  aie::rounding_mode : unsigned {
  aie::floor = rnd_floor , aie::ceil = rnd_ceil , aie::positive_inf = rnd_pos_inf , aie::negative_inf = rnd_neg_inf ,
  aie::symmetric_inf = rnd_sym_inf , aie::symmetric_zero = rnd_sym_zero , aie::conv_even = rnd_conv_even , aie::conv_odd = rnd_conv_odd ,
  aie::symmetric_floor = rnd_sym_floor , aie::symmetric_ceil = rnd_sym_ceil
}
 
enum class  aie::saturation_mode : unsigned { aie::none = 0 , aie::truncate = 1 , aie::saturate = 1 , aie::symmetric = 3 }
 

Variables

template<typename T >
static constexpr unsigned aie::native_vector_length_v = detail::native_vector_length_v<T>
 

Class Documentation

◆ aie::tile_id

struct aie::tile_id

Identifies a particular tile within the AIE array.

Class Members
uint16_t col
uint16_t row

Macro Definition Documentation

◆ __AIE_API_AIE_TYPES__HPP__

#define __AIE_API_AIE_TYPES__HPP__