X86 仿真

工具链支持在 X86 仿真环境中的应用开发能力,在不方便使用开发板的情况下,允许您在仿真环境快速完成程序的调试和计算结果的验证。

C++ 推理

使用 UCP 推理接口进行验证代码的开发,支持推理 quantized.bc 模型及 hbm 模型。UCP 仿真库接口与嵌入式接口完全一致,只是采用了不同的编译配置。UCP 推理接口使用示例请参考 模型推理应用开发指导 章节。

命令行工具

使用 X86 版本的 hrt_model_exec 工具进行模型信息查看和单帧推理,支持推理 quantized.bc 模型及 hbm 模型。hrt_model_exec 详细介绍与使用示例请参考 hrt_model_exec工具介绍 章节。

Python 推理

  • 使用 horizon_tc_ui 包封装的 HBRuntime 接口,支持推理 quantized.bc 模型及 hbm 模型。推理示例请参考 HBRuntime推理库 章节。

  • 使用 hbdk API 接口,支持推理 quantized.bc 模型及 hbm 模型。API 详细介绍与使用示例请参考 HBDK Tool API Reference - model inference 章节。

注解
  • X86 仿真环境使用 UCP 推理接口或 hrt_model_exec 工具推理 hbm 模型前,需要设置 HB_UCP_SIM_PLATFORM_TYPE 环境变量用以指定要模拟的 BPU 架构。环境变量配置说明可参考 UCP环境变量 章节。

  • 使用 UCP 仿真库推理 quantized.bc 时支持 GPU 加速,配置方法请参考 HBIR模型推理说明 章节。

quantized.bc 仿真加速与结果一致性

工具链支持在 X86 环境中对 hbm 模型进行指令仿真,但仿真效率较低,因此建议优先使用 quantized.bc 模型。 quantized.bc 模型中由 BPU 执行的部分,其 X86 仿真输出与 hbm 模型的板端推理输出保持位级一致。

使用 quantized.bc 模型进行仿真推理时,请注意以下加速能力和性能配置:

  • b30.Conv2d 算子支持基于 avx512_core_vnni 和 avx512_core 的 CPU 硬件加速。运行时会根据宿主机 CPU 支持的指令集自动选择加速方式。设置 DNNL_VERBOSE=1 环境变量后,可查看运行时详细信息。

  • 可通过 HBTL_THREAD_NUM 环境变量设置仿真推理使用的 OMP 线程数,默认值为 16。

  • 对于 J6B、J6H、J6P 和 S6P 计算平台,当 b30.Conv2d 算子输出 float16 或 float32 浮点数据时,为保证 X86 仿真结果与 hbm 模型板端推理结果位级一致,仿真速度会有一定程度的下降。