第十五章 走出实验室
  从蓝湾通信出来之后,左城在地铁上打开了u盘里的硬体手册。
  他越看眉头皱得越紧。
  基站信號处理单元用的是一款定製的嵌入式处理器,主频不高,但集成了专用的信號处理加速模块。问题在於这个加速模块的指令集和通用处理器完全不同——左城的算法里有大量的矩阵运算,在通用处理器上可以直接调用標准数学库,但在这个定製晶片上,標准库跑不了,必须用专用指令集重新实现。
  这就是方泽的战场了。
  当天晚上,左城把硬体手册和他的初步分析发给了方泽。
  方泽看了两个小时,回了一条很长的消息。
  “处理器架构我大致看明白了。好消息:这款晶片的加速模块对定点数矩阵运算有专门的硬体支持,如果把你的浮点算法改成定点实现,理论上速度能提升三到五倍。坏消息:浮点转定点会引入量化误差,你的算法对精度要求高,量化误差控制不好的话性能会崩。这是一个精度和速度的权衡问题,需要你和我一起啃。“
  左城盯著“一起啃“三个字,嘴角微弯。
  方泽从来不说“我来搞定“,也不说“你来解决“。他说的是“一起啃“。这个人骨子里是个合作者,不是独行侠——前提是他认可你的能力。
  接下来三天,左城和方泽每天晚上在实验室碰头,专攻浮点转定点的精度控制问题。
  这是一场硬仗。
  核心难点在於左城的自適应追踪算法里有一个递归更新的步骤——每一次叠代都会在上一次结果的基础上做微小修正。浮点数的精度足够高,这种微小修正可以精確执行。但定点数的精度有限,每次叠代都会引入一点量化误差,几百次叠代累积下来,误差可能被放大到不可接受的程度。
  左城试了三种常规的误差补偿方法,全部失败——误差要么没压下去,要么压下去了但速度也跟著掉下来,得不偿失。
  第四天,他坐在实验室里对著一屏幕的数据发呆。
  方泽从旁边走过来,把一杯冰美式放在他手边。这是左城第一次看见方泽给別人买咖啡。