mlir 基本操作

news/2025/3/12 11:46:46/文章来源:https://www.cnblogs.com/michaelcjl/p/18767121

mlir 基本操作

在 MLIR 中,mlir::Operation 类提供了丰富的方法,用于操作和分析 IR 中的操作(Operation)。以下是 mlir::Operation 的常用方法及其功能的详细说明:

  // 获取操作名称llvm::outs() << "Operation name: " << op->getName() << "\n";llvm::outs() << "Operation name: " << op->getName() << "\n";// 获取操作数for (mlir::Value operand : op->getOperands()) {llvm::outs() << "Operand: " << operand << "\n";}// 获取结果for (mlir::Value result : op->getResults()) {llvm::outs() << "Result: " << result << "\n";}// 获取属性for (mlir::NamedAttribute attr : op->getAttrs()) {llvm::outs() << "Attribute: " << attr.getName() << " = " << attr.getValue() << "\n";}Location loc = op.getLoc();
// 获取block 入口参数,参数类型,父block, 行号
mlir::Block *block = op->getBlock();
for (mlir::BlockArgument arg : block->getArguments()) {llvm::outs() << "  Argument: " << arg << "\n";llvm::outs() << "    Type: " << arg.getType() << "\n";llvm::outs() << "    Parent Block: " << arg.getParentBlock() << "\n";llvm::outs() << "    Location: " << arg.getLoc() << "\n";auto custom_tensor =rewriter.create<custom::ConstLikeOp>(loc, arg.getType(), arg);}

以下是获取块输入参数的主要方法:

方法 说明
getArguments() 获取块的所有输入参数。
getArgument(index) 获取块的特定输入参数。
getNumArguments() 获取块的输入参数数量。
getType() 获取输入参数的类型。
getParentBlock() 获取输入参数所属的块。
getLoc() 获取输入参数的位置信息。
getUses() 获取输入参数的使用。
SmallVector<Value> customTensors;
SmallVector<Value> resultTensors;void getcustomTensors(const llvm::SmallVector<mlir::Value> &values,SmallVector<mlir::Value> &results) {for (size_t i = 0; i < values.size(); ++i) {mlir::Type type = values[i].getType();if (auto tensorType = type.dyn_cast<mlir::TensorType>()) {ele_type = tensorType.getElementType();auto const_k =stc::getConstTensor<float>(rewriter, op, vec, newShape).value();llvm::outs() << "TensorTorchType: " << tensorType << "\n";llvm::outs() << "    Element Type: " << tensorType.getElementType()<< "\n"; // 打印元素类型llvm::outs() << "    Shape: ";for (int64_t dim : tensorType.getShape()) { // 打印形状llvm::outs() << dim << " ";}llvm::outs() << "\n";} else {llvm::outs() << "Not a TensorTorchType: " << type << "\n";}}
}void ToBuiltinTensorOp::getCanonicalizationPatterns(RewritePatternSet &patterns,MLIRContext *context) {patterns.add(+[](ToBuiltinTensorOp op, PatternRewriter &rewriter) {auto operand = op.getOperand();auto fromBuiltinOp = operand.getDefiningOp<FromBuiltinTensorOp>();if (!fromBuiltinOp)return failure();rewriter.replaceOp(op, fromBuiltinOp.getOperand());return success();});
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897623.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macOS Sequoia 15.3.2 (24D81 | 24D2082) 正式版 ISO、IPSW、PKG 下载

macOS Sequoia 15.3.2 (24D81 | 24D2082) 正式版 ISO、IPSW、PKG 下载macOS Sequoia 15.3.2 (24D81 | 24D2082) 正式版 ISO、IPSW、PKG 下载 iPhone 镜像、Safari 浏览器重大更新和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org…

macOS Sequoia 15.3.2 (24D81) Boot ISO 原版可引导镜像下载

macOS Sequoia 15.3.2 (24D81) Boot ISO 原版可引导镜像下载macOS Sequoia 15.3.2 (24D81) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org/blog/macOS-Sequoi…

sublime 中文件夹名字不显示中文的配置

菜单栏:首选项 ---> 设置 用户 文件内容如下:{"auto_complete_triggers":[{"characters": " ","selector": "text.html"}],"color_scheme": "Packages/User/Monokai (SL).tmTheme","default_…

Apple Safari 18.3.1 发布 - macOS 专属浏览器 (独立安装包下载)

Apple Safari 18.3.1 发布 - macOS 专属浏览器 (独立安装包下载)Apple Safari 18.3.1 发布 - macOS 专属浏览器 (独立安装包下载) 适用于 macOS Sonoma 和 macOS Ventura 的 Safari 浏览器 18 请访问原文链接:https://sysin.org/blog/apple-safari-18/ 查看最新版。原创作品,…

带大家做了个 AI 项目,没想到这么简单!

现在已经是全民 AI 时代了,咱们程序员更要想办法榨干 AI,把 AI 利用起来。大家好,我是程序员鱼皮,现在已经是全民 AI 时代了,咱们程序员更要想办法榨干 AI,把 AI 利用起来。前几天我一时兴起,直播用 2 多个小时的时间,从需求分析开始,带大家做了一个 AI 海龟汤游戏项目…

No.57 Vue---模板语法

一、模板语法有了模板语法,页面的每个元素都可以动态处理了。 网址:https://cn.vuejs.org/src下面的文件:1.assets :存放静态资源 2.components:存放组件 3.App.vue:根组件,组件入口。 4.main.js :主入口文件。我们在HelloWorld.vue 文件中编写代码。可以把原来不需要的内…

阿里FPGA XCKU3P开箱

背景 淘了一个好玩的阿里FPGA加速卡,PCIe Gen3x8, SFP *2 最大25G,官方用来加速网络应用的,我拿到主要想用SFP 功能,来做一下CXP OVER FIVER 10G/25G的验证工作实验 连接JTAG,板子丝印有JTAG 线序名称,根据线序 连接即可,正常连接后就能看到FPGA XCKU3P,这是卡里面原有…

word的审阅-修订

word文档里删不掉文字,删除的时候,只会在文字上面画横线,怎么办?_百度知道

阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?

图表图片由阿里巴巴提供本文作者的观点:QwQ-32B 作为小型开源 AI 模型,在数学、编程等任务上表现接近甚至超越 DeepSeek-R1 671B模型,同时计算资源占用大幅降低,使其更易部署和使用。然而,在逻辑推理等方面仍存在推理不一致和语言混杂等问题,有待优化。作者总体认可 QwQ-…

YASKAWA机器人CPU板芯片损坏维修

在现代工业生产中,工业机器人的应用越来越广泛,其中YASKAWA机器人以其卓越的性能和稳定性受到了众多企业的青睐。然而,就像任何复杂的机械设备一样,YASKAWA机器人也可能会遇到各种故障,其中CPU板芯片损坏是较为常见的问题之一。本文将深入探讨YASKAWA机器人CPU板芯片损坏的…

激光三角测量中的光斑中心定位方法及其特点

激光三角测量中的光斑中心定位方法及其特点 1. 灰度质心法 原理:基于光斑灰度分布,将像素灰度值作为权重计算质心坐标。公式表示为:特点:适用于均匀光斑,计算速度快。 抗干扰能力差,对光强不均或噪声敏感。2. Hough变换法 原理:通过参数空间投票检测光斑的圆形轮廓,利用…

CANopen转Profinet网关牵手伺服驱动器,工业舞台直接“封神”

在工业自动化领域,构建稳定且高效的通信系统是实现生产流程顺畅运作的关键要素。本文将详尽阐述如何运用稳联技术CANopen转Profinet网关,搭建一个涵盖汇川变频器的主站通信系统。在配置伊始,需在专业软件中新建工程,并添加CANopen转Profinet网关主站设备。主站设备作为整个…