AI Engine API User Guide (AIE) 2023.1
Loading...
Searching...
No Matches
Changelog

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