![]() |
AI Engine API User Guide (AIE-API) 2025.1
|
▼Basic Types | The two main types offered by the AIE API are vectors (aie::vector) and accumulators (aie::accum) |
Basic Type Initialization | |
Vector and Accumulator Conversions | Vectors and accumulators of any given element type and size can be reinterpreted as a different element type |
Concepts for Basic Types | |
Accumulator Element Types | Accumulators in AIE API rely on the aie::accum class template |
Lazy Operations | AIE architectures offer multiplication instructions that can perform additional operations on on the input arguments |
Configuration | Certain aspects of AI Engine behavior can be configured at runtime |
Memory | Each AIE core has access to up to 4 Data Memories (DM) |
Initialization | Operations to initialize vectors and accumulators |
Arithmetic | AIE API provides a set of functions that implement arithmetic operations on vector types |
Bits | Bitwise logical operations |
Comparison | Vector comparison operations |
Reduction | Vector reduction operations |
Reshaping | AIE API provides operations to change the location of the elements within a vector and to combine the elements from two or more vectors |
Floating-point Conversion | |
▼Elementary Functions | |
Floating-point Scalar Operations | |
Matrix Multiplication | The AIE API encapsulates the matrix multiplication functionality in the aie::mmul class template |
Fast Fourier Transform (FFT) | |
Special Multiplications | AIE provides hardware support to accelerate special multiplications that can be used to accelerate specific application use cases like (but not limited to) signal processing |
Lookup Tables | |
Operator Overloading | The AIE API provides overloading for most of the available operators |
Interoperability with Adaptive Data Flow (ADF) Graph Abstractions | ADF graphs use data flow abstractions to read input data and write output data |
▼Uility functions and classes | |
Architecture helpers | |
Print functions | These functions provide an abstraction on top of printf that allow users to display the contents of AIE types in the standard output |
▼Loop functions | |
Loop unrolling | These functions allow users to explicitly unroll the body of a loop |
Loop pipelining | These functions provide the ability to finely control the pipelining of a loop |
▼Non-portable optimizations | These functions provide non-portable or semi-portable functionality that can be used to apply low level optimizations |
Register pinning | These functions provide a semi-portable interface to pin variables, such as vectors, accumulators, masks, and pointers, to a given register/set of registers |