UCP是什么?
统一计算平台(Unify Compute Platform,以下简称 UCP)定义了一套异构编程接口, 实现对计算平台资源的调用。 UCP将SOC上的功能硬件抽象出来并进行封装,对外提供基于功能的API,用于创建相应的UCP任务。
UCP应用场景:
深度学习模型推理:可完成深度学习模型的推理任务,UCP内部完成模型的解析及硬件部署。
本章节用于指导如何使用UCP进行模型硬件部署等开发任务,具备基本的嵌入式开发的知识、经验和技能可以更好地理解本章节内容。
UCP框架支持两种主要工作模式:直连模式和中继模式。系统默认运行在直连模式下。QNX操作系统和x86仿真不支持中继模式。
中继模式下,支持多进程任务的统一调度,使用中继模式前,首先启动 ucp_service
,service文件位于 deps_aarch64/ucp/bin/service/
路径下,
并通过设置环境变量 HB_UCP_ENABLE_RELAY_MODE=true
来启用Relay模式,使得用户进程可以通过中继服务进行通信。
无论是直连模式还是中继模式,UCP接口的调用方式保持一致,不会对编程逻辑产生影响。您可以根据实际需求灵活选择这两种模式,以满足系统在性能和灵活性方面的要求。
backend是指UCP任务执行时的后端计算硬件,当前UCP支持的backend包括BPU、DSP、GDC、STITCH、JPU、VPU、PYRAMID、ISP。
backend | 描述 |
---|---|
BPU | Brain Process Unit,地平线神经网络计算单元。 |
除开发板外,UCP还在x86仿真环境下提供了与板端同样的开发能力支撑。
与开发板端相同,UCP在 x86 架构上通过仿真形式提供了同样的视觉处理、模型推理和高性能计算能力,所有的示例及接口代码均可以在仿真环境中等效使用。 您可以在x86环境中进行代码开发和调试,开发过程中获得可即时反馈,并在早期发现和解决问题,从而提高开发效率和代码质量,以确保代码能够无缝迁移到SoC硬件上运行。
UCP仿真使用Docker镜像自带的编译器环境即可。
但x86仿真环境下的性能通常会低于实际硬件的性能,主要原因如下:
尽管仿真环境下的性能通常低于实际硬件的性能,但仿真环境提供了完整的API支持和精确的功能验证,能够极大地提高您的开发效率和代码质量,有助于您在早期阶段发现并解决潜在的问题。