https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/AI-Engine-Data-Types?contentId=UZCB9IaSxwTdko_xL6Q2Eg
AI Engine Data Types - AI Engine Data Types - 2021.1 English - UG1079
The AI Engine scalar unit supports signed and unsigned integers in 8, 16, and 32-bit widths, along with some single-precision floating-point for specific...
ai enginedata typesenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/FIFO-Depth?contentId=pT3Shosq9blXnZzrkD3bUQ
FIFO Depth - FIFO Depth - 2022.2 English - UG1079
The AI Engine architecture uses stream data extensively for DMA-based I/O, for communicating between two AI Engines, and for communicating between the AI...
fifodepthenglish
https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/Vectorization?contentId=GdIfruG_F~moKn_D758prA
Vectorization - Vectorization - 2021.1 English - UG1079
The scalar reference code for this matrix multiplication example is shown as follows. Note that the data is stored in columns. void...
vectorizationenglish
https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/Load-and-Store-From-Memory?contentId=phIotqXX1xw2iGBgBd4o~g
Load and Store From Memory - Load and Store From Memory - 2021.1 English - UG1079
AI Engine APIs provide access methods to read and write data from data memory, streaming data ports, and cascade streaming ports which can be used by AI Engine...
loadstorememoryenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Data-Shuffle
Data Shuffle - Data Shuffle - 2022.2 English - UG1079
The AI Engine shuffle intrinsic function selects data from a single input data buffer according to the start and offset parameters. This allows for flexible...
datashuffleenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Kernel-Optimization?contentId=zh3Hh6qOcO3yX3TbD~_LGA
Kernel Optimization - Kernel Optimization - 2025.2 English - UG1079
kerneloptimizationenglish
https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Vector-Registers
Vector Registers - Vector Registers - 2023.1 English - UG1079
All vector intrinsic functions require the operands to be present in the AI Engine vector registers. The following table shows the set of vector registers and...
vectorregistersenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Buffer-Port-Multicasting?contentId=LV3lH7PUPIiPkOsGcvv99g
Buffer Port Multicasting - Buffer Port Multicasting - 2025.2 English - UG1079
The AI Engine compiler does not limit the buffer ports to a one-to-one connection. Under certain conditions, multiple kernels can share the same output buffer...
bufferportmulticastingenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Strict-Aliasing-Rule
Strict Aliasing Rule - Strict Aliasing Rule - 2022.2 English - UG1079
The strict aliasing rule dictates that pointers are assumed not to alias if they point to fundamentally different types, except for char* and void* which can...
strictaliasingruleenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Graphs-with-Libraries-Components
Graphs with Libraries Components - Graphs with Libraries Components - 2025.2 English - UG1079
The Vitis libraries targeting AI Engine are currently split into two levels: Level 1 Basic kernels Level 2 Graphs that use multiple Level 1 kernels with...
graphslibrariescomponentsenglish
https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/MAC-on-8x8-bits?contentId=aw0Cqn8MQPl0Q6ljzPjmqA
MAC on 8x8 bits - MAC on 8x8 bits - 2023.1 English - UG1079
The following figures show MAC with int8 X buffer and int8 Z buffer. The first figure shows how data is permuted and the second figure shows how coefficients...
macbitsenglish
https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Configuring-input_plio/output_plio?contentId=gmE0hTkN6gFBDOsdcBNUDA
Configuring input_plio/output_plio - Configuring input_plio/output_plio - 2023.1 English - UG1079
An input_plio/output_plio object can be configured to make external stream connections that cross the AI Engine to programmable logic (PL) boundary. This...
configuringinputpliooutputenglish
https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Relative-Constraints
Relative Constraints - Relative Constraints - 2023.2 English - UG1079
Kernel, PLIO and GMIO objects can be placed relative to each other. These types of constraints are called relative constraints. The X and Y offsets indicates...
relativeconstraintsenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/MAC-on-8x8-bits?contentId=mJ0l_OlEezS22UsRaOphEQ
MAC on 8x8 bits - MAC on 8x8 bits - 2025.2 English - UG1079
The following figures show MAC with int8 X buffer and int8 Z buffer. The first figure shows how data is permuted and the second figure shows how coefficients...
macbitsenglish
https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Data-Comparison?contentId=mAgZbY4ESvLRSQsq1zrwlQ
Data Comparison - Data Comparison - 2023.2 English - UG1079
AI Engine API provides vector comparison operations, including: aie::eq aie::neq aie::le aie::lt aie::ge aie::gt The vector comparison operations compare two...
data comparisonenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Colocated-Ports-Constraint?contentId=ml4UZOHWHn1Ltj2pQxh0qA
Colocated Ports Constraint - Colocated Ports Constraint - 2025.2 English - UG1079
This constrains a ports buffer location to be on the same bank as that of one or more other port buffers. When two double buffers are co-located, this...
portsconstraintenglish
https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Global-Constraints
Global Constraints - Global Constraints - 2023.2 English - UG1079
global constraintsenglish
https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Vector-Arithmetic-Operations
Vector Arithmetic Operations - Vector Arithmetic Operations - 2023.2 English - UG1079
The AI Engine API supports basic arithmetic operations on two vectors, or on a scalar and a vector (operation on the scalar and each element of the vector). It...
arithmetic operationsvectorenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/DMA-FIFO
DMA FIFO - DMA FIFO - 2022.2 English - UG1079
A fifo_depth() constraint specification above 40 allocates FIFOs from memory, known as DMA FIFOs. The following is an example of a FIFO allocation for a...
dmafifoenglish
https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/Vector-Register-Lane-Permutations
Vector Register Lane Permutations - Vector Register Lane Permutations - 2022.1 English - UG1079
The AI Engine fixed point vector units datapath consists of the following three separate and largely independently usable paths: Main MAC datapath...
vectorregisterlanepermutationsenglish
https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Recursive-Graphs
Recursive Graphs - Recursive Graphs - 2023.2 English - UG1079
recursivegraphsenglish
https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Strict-Aliasing-Rule?contentId=rodZ9C9chle7gnLcZUt25w
Strict Aliasing Rule - Strict Aliasing Rule - 2023.2 English - UG1079
The strict aliasing rule dictates that pointers are assumed not to alias if they point to fundamentally different types, except for char* and void* which can...
strictaliasingruleenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/input_gmio/output_gmio?contentId=bxMy_eEhbQXDiBgxh7SsYg
input_gmio/output_gmio - input_gmio/output_gmio - 2025.2 English - UG1079
This class represents the global memory (DDR) resource management and data transfer between AI Engine and global memory (DDR). The input_gmio object manages...
inputoutputenglish
https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/Free-Running-AI-Engine-Kernel?contentId=OR4WxmVCzLKQFCaWfixVDQ
Free Running AI Engine Kernel - Free Running AI Engine Kernel - 2022.1 English - UG1079
The AI Engine kernel can always be running using graph::run(-1). This way the kernel will restart automatically after the last iteration is complete. Note:...
free runningai enginekernelenglish
https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/DDR-Memory-Access-through-GMIO?contentId=OKaQRxB9JP~BRCRtzSUgsA
DDR Memory Access through GMIO - DDR Memory Access through GMIO - 2021.1 English - UG1079
The main data streams from and to the AI Engine are the AI Engine to PL streaming interface and GMIO, which is used to make external memory-mapped connections...
ddr memoryaccessenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Operator-Overloading?contentId=AgO33u9LrXj4XhyOWZ4t_g
Operator Overloading - Operator Overloading - 2025.2 English - UG1079
The AI Engine API provides operator overloading for many operations. Use this feature by including the aie_api/operators.hpp header and the aie::operators...
operator overloadingenglish
https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/MAC-Intrinsics
MAC Intrinsics - MAC Intrinsics - 2022.1 English - UG1079
MAC intrinsics perform vector multiply and accumulate operations between data from two buffers, the X and Z buffers, with the other parameters and options...
macintrinsicsenglish
https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/constraint-std-vector-T?contentId=nmUYhalL_pT0oRLzgb13vw
constraint std::vectorT - constraint std::vectorT - 2023.1 English - UG1079
This template class is used to build vector data constraints on kernels, connections, and ports. Scope Constraint must appear inside a user graph constructor....
constraintstdenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Hierarchical-Graphs
Hierarchical Graphs - Hierarchical Graphs - 2022.2 English - UG1079
A graph can contain a mix of kernels and sub-graphs. If you want to instantiate multiple kernels they can be declared as an array or with specific names. In...
hierarchicalgraphsenglish
https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Configuring-input_plio/output_plio
Configuring input_plio/output_plio - Configuring input_plio/output_plio - 2023.1 English - UG1079
An input_plio/output_plio object can be configured to make external stream connections that cross the AI Engine to programmable logic (PL) boundary. This...
configuringinputpliooutputenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding
AI Engine Kernel and Graph Programming Guide (UG1079) - 2022.2 English - Describes the intricacies...
Describes the intricacies of AI Engine kernel and graph programming.
https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Not-Colocated-Ports-Constraint
Not Colocated Ports Constraint - Not Colocated Ports Constraint - 2023.1 English - UG1079
portsconstraintenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/FIFO-Constraint
FIFO Constraint - FIFO Constraint - 2025.2 English - UG1079
This constrains a FIFO to a specific tile located at a specified column and row within the array. The tile can be an AI Engine tile, memory tile, or interface...
fifoconstraintenglish
https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Access-Data-From-a-Buffer-Port
Access Data From a Buffer Port - Access Data From a Buffer Port - 2023.1 English - UG1079
access databufferportenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Matrix-Multiplication?contentId=rXOtHCmregukFpvoCXxm_A
Matrix Multiplication - Matrix Multiplication - 2025.2 English - UG1079
The following matrix multiplication example implements the equation: C (64 x 2) = A (64 x 8) * B(8 x 2) The example assumes that: The data for the matrices is...
matrix multiplicationenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Data-Comparison?contentId=hVH8WuOOdVc4Li0uVNudog
Data Comparison - Data Comparison - 2025.2 English - UG1079
AI Engine API provides vector comparison operations, including: aie::eq aie::neq aie::le aie::lt aie::ge aie::gt The vector comparison operations compare two...
data comparisonenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Kernel-Bypass
Kernel Bypass - Kernel Bypass - 2025.2 English - UG1079
A bypass encapsulator construct executes a kernel conditionally. A runtime parameter controls the bypass. The bypass runtime control input bp : 0 for no bypass...
kernelbypassenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Other-Constraints?contentId=77z5EVft9PqIZP51Wy9sLQ
Other Constraints - Other Constraints - 2022.2 English - UG1079
Multi-Rate Designs Some designs implement kernels which are based on various data frame size. The data can be transferred through streams and/or windows. If...
constraintsenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Load-and-Store-From-Memory
Load and Store From Memory - Load and Store From Memory - 2025.2 English - UG1079
AI Engine APIs let you read and write data from data memory, streaming data ports, and cascade streaming ports used by AI Engine kernels. For additional...
loadstorememoryenglish
https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Area-Group-Constraint?contentId=zS16S0jP14nUW1EkP8Njtw
Area Group Constraint - Area Group Constraint - 2023.1 English - UG1079
The area group constraint specifies a range of tile and/or shim locations to which a group of one or more nodes can be mapped. The area group constraint can be...
area groupconstraintenglish
https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/Data-Permute-and-MAC-Examples?contentId=FMQb62KNARjtCM~FW~AHeg
Data Permute and MAC Examples - Data Permute and MAC Examples - 2021.1 English - UG1079
The following example takes two vectors with reals in rva and imaginary in rvb (with type v8int32) and creates a new complex vector, using the offsets to...
datapermutemacexamplesenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Writing-Data-to-an-Output-Window
Writing Data to an Output Window - Writing Data to an Output Window - 2022.2 English - UG1079
The following code writes a scalar typed value to an output window of the same type. The current position is not modified. void window_write(output_window_int8...
writing dataoutputwindowenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Loop-Flattening-and-Unrolling?contentId=~GU~ovpM2tIcWfCwTLeniw
Loop Flattening and Unrolling - Loop Flattening and Unrolling - 2025.2 English - UG1079
Loops can be flattened completely with the chess_flatten_loop pragma. Flattening can be useful for small loops that are not optimally automated by the AI...
loopflatteningenglish
https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/Kernel-Pragmas?contentId=2pYbvOHp74Qk5_rSKPJGlA
Kernel Pragmas - Kernel Pragmas - 2022.1 English - UG1079
The AI Engine compiler supports dedicated directives for efficient loop scheduling. Additional pragmas for reducing memory dependencies and removing function...
kernelpragmasenglish
https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Derived-Pointers
Derived Pointers - Derived Pointers - 2023.1 English - UG1079
Pointers derived from a restrict pointer are considered restrict pointers and point to the same restricted memory region, as shown in the following example,...
derivedpointersenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Asynchronous-Buffer-Port-Access
Asynchronous Buffer Port Access - Asynchronous Buffer Port Access - 2025.2 English - UG1079
In some situations, if you are not consuming a buffer port worth of data on every invocation of a kernel, or if you are not producing a buffer port worth of...
port accessasynchronousbufferenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Restrict-Qualification
Restrict Qualification - Restrict Qualification - 2022.2 English - UG1079
The C standard provides a specific pointer qualifier, __restrict, intended to allow more aggressive compiler optimization by explicitly stating data...
restrictqualificationenglish
https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/Vector-Register-Lane-Permutations?contentId=6G3MikhfLPEcoF~Pd9Aluw
Vector Register Lane Permutations - Vector Register Lane Permutations - 2022.1 English - UG1079
The AI Engine fixed point vector units datapath consists of the following three separate and largely independently usable paths: Main MAC datapath...
vectorregisterlanepermutationsenglish
https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/FIFO-Location-Constraints
FIFO Location Constraints - FIFO Location Constraints - 2022.2 English - UG1079
The AI Engine compiler tries to automatically allocate FIFOs in the most efficient manner possible. However, you might want to explicitly control their...
fifolocationconstraintsenglish
https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/graph
graph - graph - 2023.2 English - UG1079
This is the main graph abstraction exported by the ADF tools. All user-defined graphs should be inherited from class graph. Scope All instances of those...
graphenglish
https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Buffer-Port-Multicasting?contentId=06XUqzZfsQTS7ek06csrtA
Buffer Port Multicasting - Buffer Port Multicasting - 2023.2 English - UG1079
The aiecompiler is not limited to a one to one connection of buffer ports. In certain circumstances the same output buffer might be used by multiple other...
bufferportmulticastingenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/AI-Engine-API
AI Engine API - AI Engine API - 2025.2 English - UG1079
The AI Engine API is a portable programming interface for AI Engine kernel programming. This API interface targets current and future AI Engine architectures....
ai engineapienglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Floating-Point-Operations?contentId=U2JCAt~sq4t9nSVNirCsYg
Floating-Point Operations - Floating-Point Operations - 2025.2 English - UG1079
The scalar unit floating-point hardware support includes square root, inverse square root, inverse, absolute value, minimum, and maximum. It supports other...
floating pointoperationsenglish
https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Buffer-Location-Constraints
Buffer Location Constraints - Buffer Location Constraints - 2025.2 English - UG1079
The AI Engine compiler tries to automatically allocate buffers for buffers, lookup tables, and runtime parameters in the most efficient manner possible....
bufferlocationconstraintsenglish