AI Engine API User Guide
(AIE) 2023.1
Loading...
Searching...
No Matches
Changelog
Table of Contents
Vitis 2023.1
Vitis 2022.2
Vitis 2022.1
Vitis 2021.2
Vitis 2023.1
Documentation changes
Add explanation of FFT inputs
Use block_size in FFT docs
Clarify matrix data layout expectations
Clarify downshift being arithmetic
Global AIE API changes
Do not explicitly initialize inferred template arguments
More aggressive inlining of internal functions
Changes to data types
iterator: Do not declare iterator data members as const
mask: New constructors added to initialize the mask from uint32 or uint64 values
vector: Fix 1024b inserts
vector: Use 128b concats in upd_all
Changes to operations
add/sub: Support for dynamic accumulator zeroization
begin_restrict_vector: Add implementation for io_buffer
eq: Add support for complex numbers
fft: Correctly set radix configuration in fft::begin_stage calls
logical_downshift: New function that implements a logical downshift (as opposed to aie::downshift, which is arithmetic)
max/min/maxdiff: Add support for dynamic sign
neq: Add support for complex numbers
parallel_lookup: Optimize implementation for signed truncation
print_matrix: New function that prints vectors with the specified matrix shape
shuffle_up/down: Minor optimization for 16b
sliding_mul: Support data_start/coeff_start values larger than vector size
sliding_mul_sym_uct: Fix for 16b two-buffer implementation
transpose: Add support for 64b and 32b types
transpose: Enable transposition of 256 element 4b vectors (scalar implementation for now)
Vitis 2022.2
Documentation changes
Add code samples for load_v/store_v and load_unaligned_v/store_unaligned_v
Enhanced documentation for parallel_lookup and linear_approx
Global AIE API changes
Remove usage of srs in compare functions, to avoid compilation warnings as it is deprecated
Changes to data types
mask: add shift operators
saturation_mode: add saturate value. It was previously named truncate, which is not correct. The old name is also kept until it is deprecated
Changes to operations
add_reduce: add optimized implementation for cfloat on AIE
load_unaligned_v: leverage pointer truncation to 128b done by HW on AIE
fft: add support for radix 3/5 on AIE
mmul: add matrix x vector multiplicatio modes on AIE
mmul: add support for dynamic accumulator zeroization
to_fixed: provide a default return type
zeros: include fixes on AIE
Vitis 2022.1
Documentation changes
Small documentation fixes for operators
Issues of documentation on msc_square and mmul
Enhance documentation for sliding_mul operations
Change logo in documentation
Add documentation for ADF stream operators
Global AIE API changes
Changes to data types
unaligned_vector_iterator: add new type and helper functions
random_circular_vector_iterator: add new type and helper functions
iterator: add linear iterator type and helper functions for scalar values
vector: add support for dynamic sign in pack/unpack
vector: fixes and optimizations for unaligned_load/store
Changes to operations
adf::buffer_port: add many wrapper iterators
adf::stream: annotate read/write functions with stream resource so they can be scheduled in parallel
adf::stream: add stream operator overloading
parallel_lookup: expanded to int16->bfloat, performance optimisations, and softmax kernel
print: add support to print accumulators
shuffle_down_replicate: add new function
Vitis 2021.2
Documentation changes
Fix description of sliding_mul_sym_uct
Make return types explicit for better documentation
Fix documentation for sin/cos so that it says that the input must be in radians
Add support for concepts
Add documenttion for missing arguments and fix wrong argument names
Add documentation for the mmul class
Update documentation about supported accumulator sizes
Update the matrix multiplication example to use the new MxKxN scheme and size_A/size_B/size_C
Global AIE API changes
Make all entry points always_inline
Add declaration macros to aie_declaration.hpp so that they can be used in headers parsed by aiecompiler
Changes to data types
Add an argument to vector::grow, to specify where the input vector will be located in the output vector
Remove copy constructor so that the vector type becomes trivial
Remove copy constructor so that the mask type becomes trivial
Make all member functions in circular_index constexpr
Add tiled_mdspan::begin_vector_dim functions that return vector iterators
Make vector methods always_inline
Make vector::push be applied to the object it is called on and return a reference
Changes to operations
bit/or/xor: Implement scalar x vector variants of bit operations
equal/not_equal: Add fix in which not all lanes were being compared for certain vector sizes.
fft: Add alignment checks for x86sim in FFT iterators
fft: Make FFT output interface uniform for radix 2 cint16 upscale version on AIE
filter_even/filter_odd: Functional fixes
filter_even/filter_odd: Performance improvement for 4b/8b/16b implementations
filter_even/filter_odd: Do not require step argument to be a compile-time constant
interleave_zip/interleave_unzip: Improve performance when configuration is a run-time value
interleave_*: Do not require step argument to be a compile-time constant
load_floor_v/load_floor_bytes_v: New functions that floor the pointer to a requested boundary before performing the load.
max_reduce/min_reduce: Add 8b implementation
mmul: Initial support for 4b multiplication
mmul: Add support for 80b accumulation for 16b x 32b / 32b x 16b cases
mmul: Change dimension names from MxNxK to MxKxN
mmul: Add size_A/size_B/size_C data members
sin/cos/sincos: Fix to avoid int -> unsigned conversions that reduce the range
sin/cos/sincos: Use a compile-time division to compute 1/PI
sin/cos/sincos: Fix floating-point range
sin/cos/sincos: Optimized implementation for float vector
shuffle_up/shuffle_down: Elements don't wrap around anymore. Instead, new elements are undefined.
shuffle_up_rotate/shuffle_down_rotate: New variants added for the cases in which elements need to wrap-around
shuffle_up_replicate: Variant added which replicates the first element.
shuffle_up_fill: Variant added which fills new elements with elements from another vector.
shuffle_*: Optimization in shuffle primitives on AIE, especially for 8b/16b cases
sliding_mul: Fixes to handle larger Step values for cfloat variants
sliding_mul_sym: Fixes in start computation for filters with DataStepX > 1
sliding_mul_sym: Add missing int32 x int16 / int16 x int32 type combinations
sliding_mul_sym: Fix two-buffer sliding_mul_sym acc80
sliding_mul_sym: Add support for separate left/right start arguments
store_v: Support pointers annotated with storage attributes
UG1529 © 2023 Advanced Micro Devices, Inc. All rights reserved.