S100 OpenExplorer

# #总览

## #总体介绍

- UCP是什么？

  统一计算平台（Unify Compute Platform，以下简称 UCP）定义了一套异构编程接口， 实现对计算平台资源的调用。 UCP将SOC上的功能硬件抽象出来并进行封装，对外提供基于功能的API，用于创建相应的UCP任务。

- UCP应用场景:

  深度学习模型推理：可完成深度学习模型的推理任务，UCP内部完成模型的解析及硬件部署。

注解

本章节用于指导如何使用UCP进行模型硬件部署等开发任务，具备基本的嵌入式开发的知识、经验和技能可以更好地理解本章节内容。

## #工作模式

UCP框架支持两种主要工作模式：直连模式和中继模式。系统默认运行在直连模式下。 中继模式下，支持多进程任务的统一调度，使用中继模式前，首先启动 `ucp_service`，service文件位于 `deps_aarch64/ucp/bin/service/` 路径下， 并通过设置环境变量 `HB_UCP_ENABLE_RELAY_MODE=true` 来启用Relay模式，使得用户进程可以通过中继服务进行通信。 无论是直连模式还是中继模式，UCP接口的调用方式保持一致，不会对编程逻辑产生影响。您可以根据实际需求灵活选择这两种模式，以满足系统在性能和灵活性方面的要求。

## #Backend 说明

backend是指UCP任务执行时的后端计算硬件，当前UCP支持的backend包括BPU。

backend | 描述
--- | ---
BPU | Brain Process Unit，地平线神经网络计算单元。

## #x86仿真说明

除开发板外，UCP还在x86仿真环境下提供了与板端同样的开发能力支撑。

### #功能说明

与开发板端相同，UCP在 x86 架构上通过仿真形式提供了同样的模型推理和高性能计算能力，所有的示例及接口代码均可以在仿真环境中等效使用。 您可以在x86环境中进行代码开发和调试，开发过程中获得可即时反馈，并在早期发现和解决问题，从而提高开发效率和代码质量，以确保代码能够无缝迁移到SoC硬件上运行。

### #环境说明

UCP仿真使用Docker镜像自带的编译器环境即可。

### #性能说明

x86仿真环境下的性能通常会低于实际硬件的性能， 这是因为指令级仿真方式需要逐条指令进行模拟和执行，从而导致较高的计算开销和较低的仿真速度。 尽管仿真环境下的性能通常低于实际硬件的性能，但仿真环境提供了完整的API支持和精确的功能验证，能够极大地提高您的开发效率和代码质量，有助于您在早期阶段发现并解决潜在的问题。

页面目录