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 单元的阻值状

