欢畅科技头像
关注
170、MLIR的Fault Tolerance(容错)与冗余计算封面图

170、MLIR的Fault Tolerance(容错)与冗余计算

MLIR的Fault Tolerance(容错)与冗余计算

从一次凌晨三点的崩溃说起

去年做AI加速器编译器的时候,遇到一个诡异的bug。芯片在高温环境下跑推理任务,偶尔会出现个别计算单元输出全零——不是每次都复现,但一旦出现,整个推理结果就崩了。当时团队里有人提议“加ECC”,有人建议“做三模冗余”,但问题是我们的硬件资源已经吃紧,每条指令的延迟都卡在纳秒级。

后来我翻到MLIR的Dialect设计文档,突然意识到:容错不一定是硬件的事,编译器层面可以做很多“软”的事情。MLIR的多层次IR结构天然适合插入冗余计算、校验逻辑和故障恢复路径。今天这篇笔记,就聊聊我在MLIR里做容错的一些实战经验。

冗余计算的两种“姿势”

1. 数据级冗余:重复计算 + 比较

最朴素的想法:把关键计算做两遍,结果不一致就标记异常。在MLIR里,这可以通过在Linalg或Affine Dialect层面插入“影子计算”实现。

// 原始计算:一个简单的矩阵乘
%result = linalg.matmul ins(%A, %B: tensor<8x8xf32>, tensor<8x8xf32>)
                      outs(%C: tensor<8x8xf32>) -> tensor<8x8xf32>

// 插入

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/m0_50546716/article/details/166688146

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--