mlir 编译器学习笔记之五 -- 开发避坑

1、范围循环和索引循环的区别,

复制代码
// 假设原始操作数: [A, A, A] (同一个值A被用了三次)

// 范围for循环的问题:
for (auto input : op.getDpsInputs()) {  // 缓存了 [A, A, A]
  // 第一次迭代:input = A,替换为 A_conv → 操作数变为 [A_conv, A, A]
  // 第二次迭代:input = A (仍然是缓存的A),但实际上应该处理 A_conv
  // 这会导致逻辑错误!
}

// 索引循环的正确行为:
for (size_t i = 0; i < op.getDpsInputs().size(); i++) {
  auto input = op.getDpsInputs()[i];  // 每次都重新获取
  // 第一次迭代:input = A,替换为 A_conv → 操作数变为 [A_conv, A, A]
  // 第二次迭代:重新获取 op.getDpsInputs()[1] = A_conv (更新后的值)
  // 正确处理转换后的值!
}

2、replaceAllUsesExcept 处理多输入的input时需要谨慎 (output不涉及)

复制代码
需要显式列出所有要排除的操作,这要求我们知道所有不应该被修改的用户
相关推荐
半夏知半秋10 分钟前
rust学习-探讨为什么需要标注生命周期
开发语言·笔记·学习·算法·rust
我要学好英语13 分钟前
矩阵论笔记整理
笔记·线性代数·矩阵
山土成旧客18 分钟前
【Python学习打卡-Day38】PyTorch数据处理的黄金搭档:Dataset与DataLoader
pytorch·python·学习
科技林总28 分钟前
【系统分析师】2.4 数学建模
学习
HXR_plume37 分钟前
【Web信息处理与应用课程笔记7】知识抽取与表达
笔记·知识图谱·信息检索
方璧38 分钟前
ETCD注册中心
数据库·学习·etcd
week_泽44 分钟前
百战商城商品数据云函数化改造总结_百战_3
数据库·笔记·微信小程序·小程序
一口一只瑜1 小时前
应急响应之公交车系统应急排查
笔记·安全·系统安全
lpfasd1231 小时前
《21世纪金融资本论:投机资本的新理论》精读导引笔记
人工智能·笔记·金融
副露のmagic1 小时前
更弱智的算法学习 day18
学习·算法