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不涉及)

复制代码
需要显式列出所有要排除的操作,这要求我们知道所有不应该被修改的用户
相关推荐
小女孩真可爱1 天前
大模型学习记录(五)-------调用大模型API接口
pytorch·深度学习·学习
hd51cc1 天前
C++ 学习笔记 名称
笔记·学习
摇滚侠1 天前
2025最新 SpringCloud 教程,负载均衡 API 测试,笔记10
笔记·spring cloud·负载均衡
风123456789~1 天前
【OceanBase专栏】OB租户-创建实验
数据库·笔记·oceanbase
cmcm!1 天前
学习笔记1
数据库·笔记·学习
Hcoco_me1 天前
YOLO目标检测学习路线图
学习·yolo·目标检测
Jay20021111 天前
【机器学习】7-9 分类任务 & 逻辑回归的成本函数 & 逻辑回归的梯度下降
笔记·机器学习·分类
WXG10111 天前
【Flask】前后端交互示例
笔记·学习
d111111111d1 天前
STM32--SPI通讯外设-学习笔记
笔记·stm32·单片机·嵌入式硬件·学习
d111111111d1 天前
在STM32中有参宏定义define该怎么使用
笔记·stm32·单片机·嵌入式硬件·学习