2.1.1 Tiling Object Function
这个公式是 PanGaea 论文第 3.1 节中用于求解最优 Tiling 因子的优化问题模型。它的核心目的是:在片上内存(GLB)容量的限制下,寻找最佳的瓦片(Tile)大小,使得融合执行时的 DRAM 总访问量最小。
逐项拆解如下:
1. 目标函数:
- :决策变量,代表每个 Tile 中处理的 anchor 数量(即 Tiling 因子)。
- :融合执行模式下的总 DRAM 访问量。
- 含义:我们希望找到一个最优的 ,使得融合流水线的 DRAM 流量降到最低。
回顾论文公式 (5): 其中 是 Tile 的总数()。
- 第一项 是固定的(读入所有 anchor 的流量)。
- 第二项 是写回 CIGAR 结果的流量。
- 因为 与 成反比(),所以 越大,Tile 总数 越小,第二项 DRAM 输出流量就越小。
- 因此,从 DRAM 流量最小化的角度来看,我们希望 越大越好。但 不能无限大,因为有下面的约束。
2. 约束条件:
- :Working Set,即执行当前 Tiling 方案时,片上需要驻留的工作集总大小(包括 anchors、中间产生的 linear chains、graph chains、以及 WFA buffer 等)。
- :Global Buffer 的总容量。
- 含义:一个 Tile 内的所有中间数据必须全部能装进片上的 GLB 中。如果 太大,Tile 内的 anchor 太多,产生的中间数据就会超出 GLB 容量,导致数据溢出到 DRAM,从而破坏融合的意义,DRAM 流量反而会急剧上升。
- 因此,这是一个典型的带约束的优化问题:在 GLB 装得下的前提下,尽可能让 大。
3. 离散约束:
- :正整数集合。
- :Tile 大小必须是正整数,不能处理半个 anchor。
- :WFA buffer 的数量或大小因子,也必须是正整数。
- 含义:硬件资源分配和数据分块必须是离散的整数,不能是小数。
直观理解
这个公式在说:
找到一个最大的 (正整数),使得一个 Tile 处理完这些 anchors 后,产生的所有中间数据(线性链、图链、WFA 矩阵等)能够完全塞进容量为 的片上全局缓冲区里。在这个前提下,让 DRAM 访问量最小。
求解逻辑
在实际优化中, 通常是 的单调递增函数(Tile 越大,中间数据越多)。
- 如果 太小:GLB 肯定装得下,但 Tile 数量 变多,导致频繁的 Tile 切换和输出写回,DRAM 流量略增。
- 如果 太大:,数据溢出,DRAM 流量爆炸。
- 最优解:通常是在满足 的边界上,取最大的那个整数 。这也解释了为什么论文后面会采用 BFS + 装箱策略来对图进行划分,目的就是为了在限制 (每个 bin 的最大碱基数)的前提下,尽量紧凑地填满 GLB。