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

复制代码
需要显式列出所有要排除的操作,这要求我们知道所有不应该被修改的用户
相关推荐
AOI小白新手上路21 分钟前
视频去雨·论文蒸馏笔记:从物理先验到状态空间模型
数据库·笔记·音视频
AOI小白新手上路1 小时前
DRSformer·论文蒸馏笔记:可学习 Top-k 稀疏注意力去雨网络
网络·笔记·学习
AOI小白新手上路2 小时前
单幅图像去雨·论文蒸馏笔记:统一评测、方法谱系与 HQ-RAIN 新基准
笔记
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(96):M3-Agent——让 Agent 从视听经历中持续形成情景与语义长期记忆
论文阅读·人工智能·学习·开源·github
糖炒栗子要加糖3 小时前
Windows 大量小文件复制太慢?使用 Robocopy 多线程加速
笔记·提升效率
2601_961146203 小时前
我的等离子表面处理设备周度保养折腾记录
笔记·设备·设备选型
小新科研测评3 小时前
文献管理工具同步太麻烦?2026年4款多端同步工具实测,换设备不丢笔记
论文阅读·人工智能·笔记·ai·电脑
~光~~4 小时前
【嵌入式linux学习】Cache 策略:Write-Through / Write-Back + Allocation
linux·学习·spring
龙仔7255 小时前
RustDesk 1.5.0 升级安装故障处理笔记
笔记
星恒随风5 小时前
Linux基础IO万字详解:从文件描述符fd到重定向、FILE缓冲机制及MiniShell升级
linux·运维·笔记·学习·状态模式