Page 373 - 《软件学报》2025年第10期
P. 373

4770                                                      软件学报  2025  年第  36  卷第  10  期


                 芯片的工具链开发门槛, 从而促进其应用. 近年来广泛流行的深度学习前端开发工具                           (如  PyTorch、TensorFlow)
                 与编译后端    (如  TVM) 也是成功的佐证. 这类开放性编译框架的益处还在于, 利于汲取编译领域的技术积累, 利于
                 吸引开源社区的研发力量.
                    类脑领域这一类实现的理论可行性已经被文献                 [10] 所证明. 其研发必要性与技术可行性还在于以下两点: 第
                 一, 类脑计算的主要计算范式——脉冲神经网络               (SNN) 展示出了与深度神经网络不同的计算、访存特征, 同时类
                 脑计算芯片体系结构的跨度很大, 这就提供了较大的编译优化空间, 也凸显其设计难度; 第二, 旨在尽力解决                                DSA
                 (domain specific architecture, 特定领域架构) 引起的软硬件碎片化问题的编译基础设施            MLIR (multi-level inter-
                 mediate representation, 多层中间表示) 正在兴起, 提供了可重复利用的编译技术资源与框架. 我们将在第                 3  节对此
                 进行详细分析.
                    总之, 研究界    [10−13] 已认识到, 类脑计算“通用”编译至关重要, 但缺乏将计算机系统领域编译基础设施的最新进
                 展与类脑领域一般需求结合起来的工作. 本文在这方面做出尝试, 提出基于                       MLIR  的类脑计算编译框架       BIVM  及
                 其验证原型: 当前重点支持脉冲神经网络应用, 展示                BIVM  在不同芯片上支持各种典型         SNN  应用  (从  D-SNN  到
                 生物神经网络仿真) 的编译和优化能力, 芯片类型包括通用处理器、控制流/数据流混合架构的                             SNN FPGA  芯片  [14]
                 以及基于   ReRAM (resistive random-access memory, 阻变存储器) 的数据流类脑芯片   [15] . 具体贡献如下.
                    (1) 设计提出类脑计算编译框架的多层            IR (在本文中,使用     MLIR  指代  MLIR  项目,多层   IR  表示本文提出
                 的多层   IR  设计). 包括脉冲神经网络方言       (高层  IR)、由  MLIR  内置方言为主组成的中间层        IR  和针对典型类脑芯
                 片架构的多种底层       IR; 所设计的  IR  能够混合不同的抽象层次和概念, 如混合细粒度指令与某些后端的以交叉开
                 关结构为运算主体的粗粒度运算, 以便复用软件模块、简化开发.
                    (2) 设计实现多层    IR  间的优化递降转换. 针对      SNN  计算/访存特征, 递降过程支持        SNN  计算稀疏性挖掘、神
                 经元组计算合并/向量化等高层优化技术, 以及适配目标硬件的底层优化技术, 实现不同后端上的高性能.
                    (3) 实现  BIVM  原型, 支持  3  类芯片后端并完成测试与比较. 测试表明上述优化技术能够有效提升编译性能,
                 实现比目前广泛采用的开发框架更快的性能                (针对处理器芯片), 或者在目标芯片上达到比其原有工具链更高                    (或
                 者相近) 的性能.
                    未来将扩展该原型, 支持更多的典型类脑计算应用以及更多种类的类脑芯片.
                    本文第   1  节是研究背景介绍. 第     2  节给出类脑计算编译框架所面临的挑战, 以及基于               MLIR  的总体方案, 包括
                 各层  IR  的设计思路与编译优化技术的概览. 第           3  节则给出各层    IR  的具体设计思路与优化技术细节. 第           4  节是
                 BIVM  量化测试. 最后是下一步工作与总结全文.
                  1   类脑神经网络计算特征及其与深度神经网络的差异


                  1.1   SNN  数值计算形式介绍
                    类脑计算中应用最广泛的计算模型是脉冲神经网络                     (SNN), 其主要计算过程可描述如下: 首先是神经元
                 计算, 求解一个关于神经元膜电位的动力学方程来获取当前膜电位值, 如果膜电位达到阈值, 神经元会发出脉
                 冲信号同时神经元自身进入不应期, 这期间内膜电位会停留在复位电压; 接着是脉冲传输, 即发出的脉冲将根
                 据网络连接传播到它们的目标突触; 最后, 接收到脉冲信号的突触将根据突触模型更新其目标神经元的内部
                 状态.
                    神经元模型定义了膜电位和其他内部状态的动态, 分为很多种类                      [16] , 例如  LIF (leaky-integrate-and-fire)  [17] 、
                 Izhikevich [18] 、Hodgkin-Huxley [19] 等. 不同的模型提供不同级别的生物真实性, 在计算复杂度上也差别很大.
                    以类脑计算领域最为常用的           LIF  模型为例, 典型的   LIF  模型可以用以下方程表示. 其中,       V i (t) 是神经元  i 在时
                 间  t 的膜电位,  S i (t) 是一个二值变量指示神经元      i 是否在时间   t 发放脉冲信号,    w ji  是连接源神经元   j 和目标神经
                 元  i 的权重,    V leak  是与漏电流相关的常数.
                          λ 和
   368   369   370   371   372   373   374   375   376   377   378