Skip to main content
AI计算需求的抽象
算子角度
- 信息维度映射,信息过滤,信息选择 :Dot / GEMM => Join+Reduce
- 激活 : ElementWise Broadcast
- 统计、动态选择、排序 : Reduce 、G/S
- 随机数生成
- 是不是可以把所有的计算都抽象成查找表的方式
- 操作的方式由操作码+密码数来指定,实际上是定义一个查找表
- 操作码可以是指令的imm,密码数可以是约定的,也可能是提前载入的
- 乘法等价?
-

信息加工的角度
- 一堆向量和另外一堆向量交叉计算相关度
- 存内计算只是保持一支数据更靠近计算单元
- 一堆向量的变换
数字电路的特性
电路
- 电路模块不能太大,所以要大量的相同功能进行组合
- 组合带来了复杂的判断逻辑,需要流水化提高throughput
- 流水化带来的latency需要用复杂的同步机制
- 微观上说,各种scoreboard,forwarding,多级调度,都是在控制pipeline的精密配合
- 宏观上说,mailbox,barrier是在更高的维度进行同步
- 复杂同步对软件和应用有一定的要求
- 以上几个因素根据不同的设计都有非常大的弹性,整体的方案设计难度大
- 各种硬件(比如roq,sram读写口等)的数量是有限制的,不像软件视角不感知这个冲突。
- 各种操作,运算都是有延迟的,都不是实时单拍完成的
加速芯片
- 存储和传输
- 大量,大力度的并行搬运数据
- 各个级别的速度不一样
- 各个级别的暂存容量大小不一样
- 并行计算
- 大量的充分的并行计算
- 大量的数据复用
- 卷积,矩阵乘
- 同步
硬件微架构(电路)的难点和优势
难点/不适合
- 难以做复杂的算法(调度、分析、统计)
- 难以做逻辑深度比较深的计算
- latency的长和不确定,模块间的时间不确定性
- 需要大量实现“异步”逻辑,消耗大量的面积
- 需要很大的buffer存储用于状态footprint,消耗大量的面积
- 增加外部控制的复杂度,
- PC需要对所有的操作异步化,降低实时性
- 为了高频、增加很多级流水线
- 浪费大量用于同步的逻辑
- 容易撞到功耗墙
- latency的延长和调度不确定性
优势/适合
- 并行任务非常适合,适合简单的、重复的、大量的计算,比如MMU
- 带宽足够,可以做大量的并发处理
- 实时性好,可以做到cycle级别的调度
- 可以利用数字电路表达的特点加速
- 对2的幂次的乘除运算
- 固定算法的hash,mmu等处理
- 查找表计算:cuda的LOP3.LUT指令
- 通过软件的静态预先计算,最大化压缩硬件需要处理的表达空间
No Comments