Skip to content

EvanLuo42/QSRBench

Repository files navigation

QSRBench

HarmonyOS QuickSRNet x2 真机 NPU 基准程序,支持两种可切换的推理路径:

  • 默认路径:固定 512×512 LR 输入,单次 RunSync 输出 1024×1024 SR。
  • 膨胀分块路径:采用 SREngine 的 192×192 窗口、182 像素步长和均值填充,只拼接每块的有效区域。

膨胀推理

界面中的 Dilated tiled inference 开关用于切换路径。对 512×512 LR 图像会生成 3×3、共 9 个 tile:

  • 窗口:192×192
  • 重叠参数:10 像素
  • 步长:182 像素
  • 边界:DIV2K RGB 均值填充
  • 模型消费者:3 个独立 NNRt executor
  • 后处理消费者:3 个独立线程

N-API 后台线程是生产者,负责切片并把任务按轮询方式投递给模型消费者。模型消费者只执行上传、RunSync 和结果复制,随后立即处理下一块;PixelShuffle 和有效区拼接由独立后处理队列异步完成,避免阻塞 NPU。

计时口径

默认路径的 average/min/max 是单次 512×512 RunSync 耗时。

膨胀路径的主指标是一个完整 9-tile batch 从首个 RunSync 开始到最后一个 RunSync 结束的墙钟跨度,与 SREngine 的 batch inference 口径一致。界面另行显示 end-to-end 耗时,其中包含生产、结果复制和后处理。两种路径都不把以下工作计入主指标:

  • 模型加载和编译
  • 预热帧
  • GT 解码和 bicubic 降采样
  • PSNR 计算和 PixelMap 创建

膨胀路径使用 3 个预热帧、14 个测量帧,对应 27 次预热 tile 调用和 126 次测量 tile 调用;其 NPU 提交总量与默认路径的 20+120 次调用接近。

性能基准默认关闭 NPU profiling。HiAI 多 executor 不能同时占用同一个 profiling 输出文件,而且 profiling 会改变延迟;如需算子 trace,应单独启用并使用单 executor 专用构建。

模型资源

entry/src/main/resources/rawfile/models/quicksrnet_small_x2.om
entry/src/main/resources/rawfile/models/quicksrnet_small_x2_192.om

第二个文件来自 SREngine 的固定 192×192 QuickSRNet x2 模型。两种模型均要求一个 packed RGBA/XRGB 输入和一个 x2 子像素输出,并支持 NCHW、NHWC 或 NC1HWC0 契约中代码已声明的布局。

构建

工程面向 arm64-v8a 真机 NPU。使用 DevEco Studio 打开工程并运行 entry,或执行 assembleHap。膨胀生产/后处理源文件在 debug HAP 中也使用 -O3,避免 debug 的逐像素后处理掩盖 NPU 性能。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages