AI Engine API User Guide (AIE-API) 2025.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
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

template<AccumClass Class, unsigned Bits>
using aie::accum_tag_t
 
template<AccumClass Class, unsigned Bits>
using aie::accum_tag_t
 
template<AccumClass Class, unsigned Bits>
using aie::accum_tag_t
 
template<AccumClass Class, unsigned Bits>
using aie::accum_tag_t
 
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 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<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
 
enum class  aie::saturation_mode : unsigned
 

Functions

template<typename Fn, typename... MutexTypes>
void aie::sync::locked (Fn fn, MutexTypes &...mutexes)
 

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__