HPL模块在以NN为中心的计算方案中,主要作用于模型的前后处理环节。在地平线统一架构中,多种硬件均已搭载了常用的高性能的算子,而HPL模块将高性能算子相关的硬件调用进行了封装, 通过设置backend来选择不同的硬件方案(若不指定backend,UCP会自动适配负载更低的处理单元),从而平衡开发板负载,充分对开发板算力进行挖掘, 规避了不同硬件调用区别带来的不便,您可更多地关注软件功能。其功能架构如下图所示:
上述架构图中,应用通过HPL模块提供的算子的任务构造函数,如hbFFT1D、hbIFFT1D等,生成对应算子的任务句柄。 UCP提供了包含任务调度、会话管理、引擎管理等模块的Service,在对应算子的任务句柄生成后,通过UCP任务调度接口将算子任务提交到任务队列, 分配到不同的底层硬件,实现算子的功能逻辑。最底层为不同处理单元中封装实现的算子功能。
在阅读本章节前,请先明确如下基础概念,相关内容在下文可能会多次被提及:
高性能算子库:也称High Performance Library,指封装好的高性能算子库。
算子:也称Operator,指算子库中包含的高性能函数。
DSP:全称Digital Signal Processing,指数字信号处理。
Backends:指UCP框架中的可分配处理单元。
Kernel:指算子中的卷积核参数。