当前位置: 首页 > news >正文

mlir clone

clone中设置新op的位置

auto copyKernelOp = cast<KernelOp>(transposeParentKernelOp->clone());// insert cloned op before kernelOp
kernelOp->getBlock()->getOperations().insert(Block::iterator(kernelOp), copykernelOp);
// insert cloned op after kernelOp
kernelOp->getBlock()->getOperations().insert(++Block::iterator(kernelOp), copykernelOp);// kernelOp->getBlock()的意思是获取kernelOp所属于的block
// kernelOp->getBlocks()的意思是获取kernelOp中所有的的block

clone中的IRMapping

IR 中 Value的映射替换.在clone的模块为:Operation/Region/Block时,如果被克隆的模块所使用的参数来源于外部,需要把原复制模块里的操作数value映射为新的从外面传入的value

IRMapping mapper;
mapper.map(oldArg, newArg); // 把 oldArg 对应到 newArgOperation *newOp = builder.clone(*oldOp, mapper);
IRMapping mapper;
// 如果 Region 有入口参数,要先建立映射 oldArg->newArg
for (auto [oldBbArg, newBbArg] : llvm::zip(oldBlock->getArguments(), newBlock->getArguments())) {mapper.map(oldBbArg, newBbArg);
}// 遍历 clone Block 内的 Ops
for (auto &op : oldBlock->getOperations()) {builder.clone(op, mapper);
}
http://www.lryc.cn/news/621577.html

相关文章:

  • week1-[循环嵌套]画正方形
  • cloudflare缓存配置
  • AAAI爆款:目标检测新范式,模块化设计封神之作
  • StarRocks数据库集群的完整部署流程
  • JavaScript性能优化30招
  • 【车联网kafka】常用参数及其命令总结(第八篇)
  • 计算机网络:(十五)TCP拥塞控制与TCP拥塞控制算法
  • es7.x的客户端连接api以及Respository与template的区别
  • Notepad++插件开发实战指南
  • 【详细操作指南】如何将 Moodle 与编辑器连接,以修改文档、检查和批改作业等
  • HTTP/2新型漏洞“MadeYouReset“曝光:可发动大规模DoS攻击
  • HTTP 请求方法:GET 与 POST
  • STM32L051 RTC闹钟配置详解
  • 《JMeter核心技术、性能测试与性能分析》 教学大纲及标准
  • 硬核实用!R+贝叶斯解决真实问题:参数估计(含可靠性分析) + 回归建模(含贝叶斯因子比较) + 生产级计算实践 赠「常见报错解决方案」秘籍!
  • 电商架构测试体系:ZKmall开源商城筑牢高并发场景下的系统防线
  • Jmeter自定义脚本
  • Easy Rules 规则引擎详解
  • 【测试工具】JMeter基本使用及MySQL数据库压力测试
  • Stagehand深度解析:从开源自动化工具到企业级RPA平台的演进之路
  • 新手向:Python函数定义与参数传递(位置参数、关键字参数、默认参数)
  • Unity输入系统:旧版Input_System
  • 大气负氧离子自动监测站:解密空气的科技密码
  • SSL和TLS协议的消息认证码(MAC)
  • 【opencv-Python学习笔记(5):几何变换】
  • 《Effective Java》第1条:用静态工厂方法代替构造器
  • 【R语言】R 语言中 gsub 与正则表达式详解(含 POSIX 与 Perl 风格实例)
  • 【R语言】更换电脑后,如何在新设备上快速下载原来设备的 R 包?
  • 智能体开发实战:用Deepseek做一个生成思维导图的智能体
  • 2025高防IP vs 普通IP:本质差异与选型指南