吹拉弹唱


  • Home
  • Archive
  • Categories
  • Tags
  • Books
  •  

© 2022 Kleon

Theme Typography by Makito

Proudly published with Hexo

机器学习系统 1-5 - 后端硬件后端流程优化

Posted at 2021-01-18Updated at 2021-01-18 机器学习  机器学习 FPGA 

这里说的性能优化不是计算性能优化,比如脉动阵列的优化,而是如何使硬件设计在FPGA后端流程中时序尽量不违例。

FPGA的好处挺多的,可以芯片的价格也是美丽的。资源越多,价格越贵,而且还有不同资源配比,满足不同需要。
一般来说,FPGA中的关键资源包括:

  • DSP(乘加单元),代表了绝对算力,也是有一段短暂的时间FPGA可以和GPU叫板的主要支持因素。
  • BRAM(片上存储),代表了Cache大小,大到可以把模型整个都放上来,不过实际上只需要放下提前prefetch的数据即可,通过pipeline屏蔽DDR读取latency。
  • FF(锁存器),代表了寄存器总量,一般不太会不够用吧。
  • 布线资源,影响通用逻辑复杂程度。
  • LUT(查找表),影响通用逻辑复杂程度。

那个时候,大家的工艺节点还差不多,Xilinx猛怼DSP,单个封装内3D堆几个die,加上FPGA工程师使用的倍频技巧,实际计算效率还能和GPU比一比。

后来,NVIDIA财大气粗,逐步垄断市场,算力每代大跃进。Xilinx起初还想以ACAP1——同时集成ARM、FPGA、CGRA的巨兽——反超。

但无奈ACAP还是难产,大部分时间停留在励志吃下5G、自动驾驶、人工智能等多个领域的PPT中。即使真的大规模量产,成本也是可以想象的没有竞争力。最终,做FPGA加速器的,还是老老实实回去做芯片了。

FPGA后端指的是Synthesize和Implementation,Implementation包括Remapping,Placing、Routing等。

相比芯片要傻瓜的多。通过XDC约束布局布线,更换策略,画pblock等方法降低违例TNS(Total Negative Slack)。

通过阅读STA报告,我们基本能定位有问题(比如fan out过高,WNS明显过小,拥塞等级过高)的地方,反过来修改设计,比如插入寄存器,对跨时钟的逻辑set_false_path,或者手动复制寄存器等等。

DSP一般被用来搭建计算密集型算子,元素积或者自然指数通常用LUT搭乘法器,根据频率调整合适的pipeline级数,前后插入寄存器提高时序。

控制跨die信号总量,跨die频率尽可能的低,前后加寄存器。

多阅读官方文档,熟悉底层器件特性,明白自己写的代码映射到什么样的硬件结构上,参考示例工程。

Garbage in, grabage out。


  • [1] Versal

Share 

 Previous post: 机器学习系统 1-6 - 后端硬件软件栈 Next post: 机器学习系统 3-2 - 数据预处理 

© 2022 Kleon

Theme Typography by Makito

Proudly published with Hexo