Data Flow Programming for the Software/Hardware Developer
The AI Engine architecture is based on a data flow technology. Processing elements come in arrays of 10 to 100 tiles–creating a single program across compute units. For a designer to embed directives to specify parallelism across these tiles would be tedious and nearly impossible. To overcome this difficulty, AI Engine design is performed in two stages: single kernel development followed by Adaptive Data Flow (ADF) graph creation, which connects multiple kernels into an overall application.
Vitis Unified IDE provides a single IDE cockpit that enables AI Engine kernel development using C/C++ programming code and ADF graph design. Specifically, designers can:
- Develop kernels in C/C++ and describe specific compute functions using Vitis libraries
- Connect kernels via ADF graphs using Vitis AI Engine tools
A single kernel runs on a single AI Engine tile by default. However, multiple kernels can run on the same AI Engine tile, sharing the processing time where the application allows.
A conceptual example is shown below:
- AI Engine kernels are developed in C/C++
- Kernels in programmable logic (PL) are written in RTL or Vitis HLS (high level synthesis)
- The data flow between kernels in both the PL and AI Engines is performed via an ADF graph