|
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 |