190、移动端计算摄影的算力分配:CPU、GPU、DSP、NPU 的任务划分与性能优化

190、移动端计算摄影的算力分配:CPU、GPU、DSP、NPU 的任务划分与性能优化

190、移动端计算摄影的算力分配:CPU、GPU、DSP、NPU 的任务划分与性能优化

一、一个让我熬夜三天的bug

去年Q2,我负责某旗舰机型的夜景模式调优。项目组反馈:开启超级夜景后,取景器预览帧率从30fps掉到8fps,用户滑动变焦时画面卡成PPT。我第一反应是ISP pipeline过载,查了ISP负载曲线——正常,甚至还有余量。再查CPU占用率,四个大核全跑满,温度直逼85度。问题出在哪?我盯着perfetto trace看了两小时,发现一个诡异现象:HDR合成线程被调度到了小核上,而CPU大核在跑一个纯数学运算——高斯金字塔构建。这活儿本该交给GPU或者DSP干,但代码里写死了用CPU的NEON指令集。更坑的是,这个高斯金字塔的输入分辨率是4000x3000,每帧要算5层,CPU大核跑一次要12ms,而GPU只用2.3ms。我改了一行代码,把金字塔构建扔给GPU,预览帧率直接回到28fps。这个教训让我意识到:算力分配不是“哪个核闲着就用哪个”,而是“哪个核最适合干这个活”。

二、移动端计算摄影的算力谱系

先给个直观的算力特征对比,别当教科书背,当工具书查:

  • CPU(大核):延迟敏感、分支预测强、单线程性能天花板高。适合做控制流密集的任务,比如场景检测的决策树、AE/AWB的收敛逻辑、多帧对齐的匹配点筛选。但别拿它做像素级并行运算,那是自虐。
  • GPU:吞吐量怪兽,但延迟高、功耗大。适合做