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

杨乐 等: BIVM: 类脑计算编译框架及其原型研究                                                      4789



                                          表 A3 GaBAN  方言中的操作、数据类型与属性

                      名称            语义层面的形式描述                    含义               数据格式层面的形式化描述
                    gaban.sub
                    gaban.add    (Float[N], Float[N]) -> Float[N]  执行二元计算      (Tensor<?xf32>, Tensor<?xf32>) ->
                    gaban.mul                                                         Tensor<?xf32>
                    gaban.cmp    (Float[N], Float[N]) -> Bool[N]  执行逐个元素比较     (Tensor<?xf32>, Tensor<?xf32>) ->
                                                                                       Tensor<?xi1>
                                 (Bool[N], Float[N], Float[N]) ->  根据布尔值, 选择两个输入中的  (Tensor<?xi1>, Tensor<?xf32>,
                   gaban.where
                                        Float[N]        一个                      Tensor<?xf32>) -> Tensor<?xf32>
                    gaban.load    MemoryConfig -> Float[N]  使用控制核预先配置好的访存        (i1, i32, i32) -> Tensor<?xf32>
                    gaban.store  (MemoryConfig, Float[N]) -> ()  配置, 加载或存储数据      (i1, i32, i32, Tensor<?xf32>)
                                                        配置 GaBAN 核心的运行时参
                  gaban.configure   GaBANParams -> ()                                   i32 -> ()
                                                        数, 例如循环周期等
                    gaban.wait           () -> ()       等待 GaBAN 核心完成执行                  () -> ()
                                                        GaBAN Tensor 类型, 表示运行
                     Tensor               -                                           无运行时存储
                                                        时每一个循环中某一步的数据

                    SNN IR  的优势主要体现在以下       3  个方面.
                    (1) 完备描述   SNN: SNN IR  提供了神经元/突触定义操作与神经元/突触计算操作, 并且还支持扩展新的模型,
                 因此能够完备地描述       SNN  应用.
                    (2) 易于移植: 设计参照了      PyNN——PyNN   是一种与模拟器无关的        SNN  通用编程与声明接口, 可以确保该层
                 易移植且为领域开发人员所熟悉.
                    (3) 便于后续优化: 首先, SNN IR    的设计利于后续优化转化的粗细粒度混合下降——SNN                   方言使用粗粒度设
                 计, 这样能够保证对于不同粒度的硬件后端, SNN              方言的算子均能够下降到该后端. 其次, SNN IR           的设计还利于
                 进行神经元合并优化, 参照正文图          3(b1) 与  (b2) 可以看到如下的神经元组合并规则.
                    ● 对于神经元定义算子        (snn.newlif, snn.newizhikevich, snn.newpoisson), 合并时会更改神经元数量为合并后的
                 总神经元数量, 并返回合并后的神经元状态变量               (正文图   3(b1) 中的  %e_v, %i_v  合并后变为图  3(b2) 中的  %a_v);
                    ● 对于突触定义算子       (snn.newstatic), 合并时会更新源神经元与目的神经元的数量, 并返回一个合并后的突触
                 变量  (图  3(b1) 中的  %ee_w, %ei_w, %ie_w, %ii_w  合并后变为图  3(b2) 中  %a_w);
                    ● 对于神经元更新过程        (snn.lif, snn.izhikevich, snn.poisson), 合并时需要将原先的神经元状态变量替换为经过
                 合并后的神经元状态变量         (图  3(b1) 中的  %e_v, %i_v  被替换为图  3(b2) 中  %a_v);
                    ● 对于脉冲传播过程       (snn.static), 合并时也需要将原先的突触变量替换为合并后的突触变量                   (图  3(b1) 中
                 的  %ee_w, %ei_w, %ie_w, %ii_w  被替换为图  3(b2) 中  %a_w).
                    ReRAM IR  的优势除了与硬件后端指令集对应之外, 还利于进行权重微调优化. 由于                       ReRAM  方言采用的是
                 粗粒度设计, 因此较为容易进行权重微调优化              (只需要对优化后的权重使用          snn.init_crossbar 将新的权重初始化到
                 ReRAM  上即可). 此外, 以  crossbar 为单位进行权重初始化还有利于进行权重的结构化剪枝, 减少                  crossbar 上的计
                 算, 这将是本工作后续扩展的方向之一.
                    GaBAN IR  的优势也是类似, 除了与硬件后端指令集对应之外, 其利于高效地进行向量计算. GaBAN                         硬件的
                 一个重要特点是支持向量计算, 而          GaBAN IR  很好地使用了硬件向量化的特点, 如表           A3 中的  gaban.sub, gaban.mul,
                 gaban.add  操作的操作数都是     tensor 类型, 保证了生成的代码能够有效地利用             GaBAN  硬件向量化资源. 同时
                 GaBAN IR  是由第  2  层  IR  转化生成的, 而  GaBAN IR  的计算、访存设计同时与第       2  层  IR  形式类似, 使得这一转
                 换能够高效地进行       (gaban.add  对应  arith.add, gaban.load  对应  vector.load  等).

                  附录  B. ReRAM  与模拟器简介

                    阻变存储器     (resistive random-access memory, ReRAM) 是一种新型非易失性存储器件, ReRAM   单元的阻值状
   387   388   389   390   391   392   393   394   395   396   397