What is UCP?
The Unify Compute Platform(Unify Compute Platform, hereafter referred to UCP) defines a unified set of heterogeneous programming interfaces to enable calls to all resources on the computing platform. UCP abstracts and encapsulates the functional hardware on the SOC, and externally provides function-based APIs for creating corresponding UCP tasks , and supports the setting of a hardware backend to be submitted to the UCP scheduler, which can complete the unified scheduling of tasks on the Soc based on hardware resources.
UCP scenarios:
Deep Learning Model Inference: deep learning model inference tasks can be accomplished, and model parsing and hardware deployment are completed within UCP.
This section is used to guide you on how to use the UCP for hardware deployment of the model. Knowledge, experience, and skills in basic embedded development can lead to a better understanding of the contents of this section.
The UCP framework supports two main operating modes: Direct Mode and Relay Mode. The QNX operating system and x86 simulation does not support Relay mode.
By default, the system operates in Direct Mode. In Relay Mode, UCP enables unified scheduling
of multi-process tasks. To use Relay Mode, you must first start the ucp_service,
which is located at deps_aarch64/ucp/bin/service/. You also need to enable Relay
Mode by setting the environment variable HB_UCP_ENABLE_RELAY_MODE=true, allowing user processes
to communicate via the relay service. Regardless of whether Direct Mode or Relay Mode is used,
the UCP interface calls remain consistent, without impacting the programming logic.
You can flexibly choose between these two modes based on the system’s performance and flexibility requirements.
The backend refers to the back-end computing hardware for UCP task execution. The current backends supported by UCP include BPU, DSP, GDC, STITCH, JPU, VPU(Video Process Unit), PYRAMID, ISP.
| Backend | Description |
|---|---|
| BPU | Brain Process Unit, the Horizon Neural Network computational unit. |
In addition to the development board, UCP also provides the same development support in an x86 simulation environment as it does on the board.
Similar to the development board, UCP provides the same visual processing, model inference, and high-performance computing capabilities in an x86 architecture through simulation. All samples and interface code can be equivalently used in the simulation environment. You can develop and debug code in the x86 environment, gaining immediate feedback during the development process. This allows you to identify and resolve issues early, improving development efficiency and code quality, and ensuring seamless migration of the code to run on SoC hardware.
The UCP simulation uses the compiler environment provided by the Docker image.
The performance of the x86 simulation environment is usually lower than that of the actual hardware.