For edge DPUCZDX8G, the runtime framework (called N2Cube) is shown in the following figure. For Vitis AI release, N2Cube is based on the Xilinx Runtime (XRT). For legacy Vivado® based DPU, it interacts with the underlying Linux DPU driver (instead of XRT) for DPU scheduling and resource management.
Starting with Vitis AI v1.2 release, N2Cube is now available as open source. More details are available in the mpsoc/ dir from the Vitis AI repo: https://github.com/Xilinx/Vitis-AI.
N2Cube offers a comprehensive C++/Python programming interface to flexibly meet the diverse requirements for edge scenarios. Refer to Advanced Programming Interface for more details about edge DPU advanced programming. The highlights for N2Cube are listed as follows:
- Supports multi-threading and multi-process DPU application deployment.
- Supports multiple models running in parallel and zero-overhead dynamic switching at runtime.
- Automated DPU multi-core scheduling for better workload balancing.
- Optional flexibility to dynamically specify DPU core affinity over DPU tasks at runtime.
- Priority based DPU task scheduling while adhering to DPU cores affinity.
- Optimized memory usage through DPU code and parameter sharing within multi-threaded DPU application.
- Easily adapts to any POSIX-compliant OS or Real-Time Operating System (RTOS) environment, such as QNX, VxWorks, and Integrity.
- Ease-of-use capabilities for DPU debugging and performance profiling.
Currently, N2Cube officially supports three operating environments, including Linux, Xilinx XRT, and BlackBerry QNX RTOS. You can contact the Xilinx representatives to acquire Vitis AI package for QNX or to port N2Cube to other third party RTOS. Meanwhile, with the source code becoming accessible, you can freely port N2Cube to any other environment.