MLIR笔记(5)
4.3.4. 图区域
在MLIR中,区域里类似图的语义由RegionKind::Graph来表示。对没有控制流的并发语义,以及通用有向图数据结构的建模,图区域是合适的。图区域适用于表示耦合值之间的循环关系,这些关系没有基本的序。例如,一个图区域里的操作可能表示独立线程的控制流,具有表示数据流的值。就像通常在MLIR里一样,区域的特定语义完全由它包含的操作确定。图区域可能仅包含单个基本块(入口块)。
基本原理:当前的图区域被随意限制为单个基本块,虽然这个限制没有特别的语义方面的原因。加入这个限制使得稳定遍基本架构以及常用于处理图区域的遍恰当地处理反馈循环更容易。未来可能允许多基本块区域,如果出现要求它的用例。
在图区域中,MLIR操作自然地代表节点,而每个MLIR值代表连接源节点与多个目的节点的一条多边(multi-edge)。所有在区域里定义作为操作结果的值,作用域在区域内,可以被区域里的任意其他操作访问。在图区域中,一个基本块内存在的次序以及一个区域内基本块的次序是没有语义意义的,例如非终结符操作可以通过规范化任意重排。其他类型图,比如带有多个源节点与多个目的节点的图,也可以被图区域表示为MLIR操作。
注意,在图区域中的单个基本块里,或者基本块之间,会出现环。
"test.graph_region"() ({ // A Graph region
%1 = "op1"(%1, %3) : (i32, i32) -> (i32) // OK: %1, %3 allowed here
%2 = "test.ssacfg_region"() ({
%5 = "op2"(%1, %2, %3, %4) : (i32, i32, i32, i32) -> (i32) // OK: %1, %2, %3, %4 all defined in the containing region
}) : () -> (i32)
%3 = "op2"(%1, %4) : (i32, i32) -> (i32) // OK: %4 allowed here
%4 = "op3"(%1) : (i32) -> (i32)
}) : () -> ()
4.3.5. 参数与结果
区域第一个基本块的参数被视为该区域的参数。这些参数的源由父操作的语义定义。它们可能对应这个操作本身使用的一些值。
区域产生(可能是空C的)一组值。操作语义定义了区域结果与操作结果之间的关系。
4.3.6. 一些ODS定义
在ODS里region是这样的定义:
1638 class Region<Pred condition, string descr = ""> :
1639 RegionConstraint<condition, descr>;
基类RegionConstraint的定义是:
185 class RegionConstraint<Pred predicate, string description = ""> :
186 Constraint<predicate, description>;
在MLIR里,操作可能包含各种形式的region,因此有这些region派生定义:
- 表示任意region的AnyRegion:
1642 def AnyRegion : Region<CPred<"true">, "any region">;
- 表示包含指定数量基本块的SizedRegion:
1645 class SizedRegion<int numBlocks> : Region<
1646 CPred<"::llvm::hasNItems($_self, " # numBlocks # ")">,
1647 "region with " # numBlocks # " blocks">;
- 表示包含0或多个基础region的变长VaridadicRegion:
1650 class VariadicRegion<Region region>
1651 : Region<region.predicate, region.description>;
一个使用这些Region派生类定义的例子是(TestOps.td):
1230 def SSACFGRegionOp : TEST_Op<"ssacfg_region", [
1231 DeclareOpInterfaceMethods<RegionKindInterface>]> {
1232 let summary = "operation with an SSACFG region";
1233 let description = [{
1234 Test op that defines an SSACFG region.
1235 }];
1236
1237 let regions = (region VariadicRegion<AnyRegion>:$regions);
1238 let arguments = (ins Variadic<AnyType>);
1239 let results = (outs Variadic<AnyType>);
1230 }
上面1230行的region是MLIR引入的关键字,而$regions里的regions将是由mlir-tblgen生成的访问函数的名字。
相关文章:
MLIR笔记(5)
4.3.4. 图区域 在MLIR中,区域里类似图的语义由RegionKind::Graph来表示。对没有控制流的并发语义,以及通用有向图数据结构的建模,图区域是合适的。图区域适用于表示耦合值之间的循环关系,这些关系没有基本的序。例如,…...
abapgit 安装及使用
abapgit 需求 SA[ BASIS 版本 702 及以上 版本查看路径如下: 安装步骤如下: 1. 下载abapgit 独立版本 程序 链接如下:raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap 2.安装开发版本 2.1 在线安装 前置条…...
园区无线覆盖方案(智慧园区综合解决方案)
李经理正苦恼头疼的工业园区数字化改造项目。近年企业快速增长,园区内Argent工业设备激增,IT部门应接不暇。为确保生产系统稳定运行,IT管理团队经过反复摸索,决定进行全面的数字化升级。然而改造之艰巨远超想象——混杂的接入环境、复杂的专线部署、长达数月的建设周期,种种…...
配置中心--Spring Cloud Config
目录 概述 环境说明 步骤 创建远端git仓库 准备配置文件 配置中心--服务端 配置中心--客户端 配置中心的高可用 配置中心--服务端 配置中心--客户端 消息总线刷新配置 配置中心--服务端 配置中心--客户端 概述 因为微服务架构有很多个服务,手动一个一…...
笔记-模拟角频率和数字角频率的关系理解
先建议阅读前人此文(点击这里),有助于理解。 模拟频率:f 模拟角频率:Ω 数字角频率:ω 其中:在模拟信号中Ω 2πf 正弦波表示:sin(2πft) sin(Ωt) 数字信号就是离散的ÿ…...
Zookeeper+Kafka集群
注:本章使用的Kafka为2.7.0版本 Zookeeper概述 1.Zookeeper定义 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 2.Zookeeper工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理…...
Sunshine+Moonlight+Android手机串流配置(局域网、无手柄)
目录 前言Sunshine(服务端)ApplicationConfigurationGeneralAdvance Moonlight(客户端)配对打开虚拟手柄串流按键调整退出串流 原神,启动! 前言 写这篇文章单纯是因为搜来搜去没有很符合我需求的教程&#…...
从顺序表中删除具有最小值的元素(假设唯一) 并由函数返回被删元素的值。空出的位 置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
题目描述:从顺序表中删除具有最小值的元素(假设唯一) 并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。 bool DeleteMin(SqList &L,int &min){if(L.length 0)return false;min L…...
详解—[C++ 数据结构]—AVL树
目录 一.AVL树的概念 二、AVL树节点的定义 三、AVL树的插入 3.1插入方法 四、AVL树的旋转 1. 新节点插入较高左子树的左侧---左左:右单旋 2. 新节点插入较高右子树的右侧---右右:左单旋 3.新节点插入较高左子树的右侧---左右:先左单旋…...
卷积神经网络(CNN):乳腺癌识别.ipynb
文章目录 一、前言一、设置GPU二、导入数据1. 导入数据2. 检查数据3. 配置数据集4. 数据可视化 三、构建模型四、编译五、训练模型六、评估模型1. Accuracy与Loss图2. 混淆矩阵3. 各项指标评估 一、前言 我的环境: 语言环境:Python3.6.5编译器…...
有文件实体的后门无文件实体的后门rootkit后门
有文件实体后门和无文件实体后门&RootKit后门 什么是有文件的实体后门: 在传统的webshell当中,后门代码都是可以精确定位到某一个文件上去的,你可以rm删除它,可以鼠标右键操作它,它是有一个文件实体对象存在的。…...
GPT实战系列-大模型训练和预测,如何加速、降低显存
GPT实战系列-大模型训练和预测,如何加速、降低显存 不做特别处理,深度学习默认参数精度为浮点32位精度(FP32)。大模型参数庞大,10-1000B级别,如果不注意优化,既耗费大量的显卡资源,…...
SQL Sever 基础知识 - 数据排序
SQL Sever 基础知识 - 二 、数据排序 二 、对数据进行排序第1节 ORDER BY 子句简介第2节 ORDER BY 子句示例2.1 按一列升序对结果集进行排序2.2 按一列降序对结果集进行排序2.3 按多列对结果集排序2.4 按多列对结果集不同排序2.5 按不在选择列表中的列对结果集进行排序2.6 按表…...
vscode配置使用 cpplint
标题安装clang-format和cpplint sudo apt-get install clang-format sudo pip3 install cpplint标题以下settings.json文件放置xxx/Code/User目录 settings.json {"sync.forceDownload": false,"workbench.sideBar.location": "right","…...
C++ 系列 第四篇 C++ 数据类型上篇—基本类型
系列文章 C 系列 前篇 为什么学习C 及学习计划-CSDN博客 C 系列 第一篇 开发环境搭建(WSL 方向)-CSDN博客 C 系列 第二篇 你真的了解C吗?本篇带你走进C的世界-CSDN博客 C 系列 第三篇 C程序的基本结构-CSDN博客 前言 面向对象编程(OOP)的…...
C++ 指针详解
目录 一、指针概述 指针的定义 指针的大小 指针的解引用 野指针 指针未初始化 指针越界访问 指针运算 二级指针 指针与数组 二、字符指针 三、指针数组 四、数组指针 函数指针 函数指针数组 指向函数指针数组的指针 回调函数 指针与数组 一维数组 字符数组…...
.locked、locked1勒索病毒的最新威胁:如何恢复您的数据?
导言: 网络安全问题变得愈加严峻。.locked、locked1勒索病毒是近期备受关注的一种恶意软件,给用户的数据带来了巨大威胁。本文将深入探讨.locked、locked1勒索病毒的特征,探讨如何有效恢复被其加密的数据,并提供一些建议…...
Apache Sqoop使用
1. Sqoop介绍 Apache Sqoop 是在 Hadoop 生态体系和 RDBMS 体系之间传送数据的一种工具。 Sqoop 工作机制是将导入或导出命令翻译成 mapreduce 程序来实现。在翻译出的 mapreduce 中主要是对 inputformat 和 outputformat 进行定制。 Hadoop 生态系统包括:HDFS、Hi…...
【UGUI】实现UGUI背包系统的六个主要交互功能
在这篇教程中,我们将详细介绍如何在Unity中实现一个背包系统的六个主要功能:添加物品、删除物品、查看物品信息、排序物品、搜索物品和使用物品。让我们开始吧! 一、添加物品 首先,我们需要创建一个方法来添加新的物品到背包中。…...
电压驻波比
电压驻波比 关于IF端口的电压驻波比 一个信号变频后,从中频端口输出,它的输出跟输入是互异的。这个电压柱波比反映了它输出的能量有多少可以真正的输送到后端连接的器件或者设备。...
如何快速上手F3D三维查看器:面向初学者的完整指南
如何快速上手F3D三维查看器:面向初学者的完整指南 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d F3D三维查看器是一款快速、简约且功能强大的开源3D模型预览工具,专为设计师、开发…...
告别小白!用PuTTY连接Linux服务器的10个实用技巧(含私钥登录与防断线设置)
告别小白!用PuTTY连接Linux服务器的10个实用技巧(含私钥登录与防断线设置) PuTTY作为Windows平台上最经典的SSH客户端之一,其简洁高效的特点深受开发者喜爱。但很多用户仅仅停留在基础连接功能上,未能充分发挥其潜力。…...
PyTorch 2.8镜像实战案例:RTX 4090D运行MiniCPM-Llama3-8B多语言问答
PyTorch 2.8镜像实战案例:RTX 4090D运行MiniCPM-Llama3-8B多语言问答 1. 环境准备与快速验证 1.1 镜像基础配置 这个专为RTX 4090D优化的PyTorch 2.8镜像已经预装了深度学习所需的所有关键组件: 核心框架:PyTorch 2.8 (CUDA 12.4编译版)加…...
Z-Image-Turbo_Sugar脸部Lora与Dify工作流引擎集成:打造无代码AI人脸风格化应用
Z-Image-Turbo_Sugar脸部Lora与Dify工作流引擎集成:打造无代码AI人脸风格化应用 想象一下,运营团队想为即将到来的春节活动,快速上线一个“生成你的专属国风头像”的小程序。按照传统流程,你需要召集前后端开发、算法工程师&…...
低成本搭建厘米级定位:用树莓派+ZED-F9P+开源电台DIY你的RTK移动站
低成本搭建厘米级RTK定位系统:树莓派与开源硬件的完美组合 在无人机航测、农业自动导航和机器人开发领域,厘米级定位不再是遥不可及的梦想。如今,借助开源硬件和软件生态,个人开发者完全可以用不到专业设备十分之一的成本搭建属于…...
别再只用单一颜色了!ArcGIS地图符号化保姆级教程:从标记、线型到填充,手把手教你做出专业地图
ArcGIS地图符号化实战:从基础操作到视觉叙事的高级技巧 1. 地图符号化的艺术与科学 当我们面对一张城市设施分布图时,第一眼吸引注意力的往往不是数据本身,而是那些跳跃的色彩、精致的图标和流畅的线条。这正是地图符号化的魔力——它将冰冷的…...
Linux交叉编译避坑指南:PKG_CONFIG_LIBDIR和PKG_CONFIG_PATH的正确配置姿势
Linux交叉编译实战:PKG_CONFIG环境变量深度解析与避坑手册 在嵌入式开发领域,交叉编译就像一场精密的外科手术——我们需要在本机环境下为完全不同的目标平台构建可执行程序。而pkg-config工具及其相关环境变量的配置,往往是这场手术中最容易…...
SITS2026深度拆解(全球仅7家实验室掌握的因果推理对齐协议)
第一章:SITS2026深度解析:AGI的关键技术挑战 2026奇点智能技术大会(https://ml-summit.org) SITS2026作为全球首个聚焦通用人工智能(AGI)系统级验证与可扩展治理的年度技术峰会,其核心议程《SITS2026 AGI基准协议》首…...
vue2+element-UI表格封装
针对表格进行封装,在列表页面直接传入字段数组就可以展示数据表: <template><div class"table-container" :class"{ show-vertical-lines: showVerticalLines }"><!-- 数据表格 --><el-table ref"tableRe…...
新手避坑指南:用Proteus和Keil C51实现按键流水灯,仿真和实物现象为啥是反的?
51单片机按键控制LED的仿真与实物差异全解析 第一次用Proteus仿真按键控制LED流水灯时,看到仿真结果和实物现象完全相反,那种困惑感我至今记忆犹新。当时盯着开发板反复检查电路连接,确认代码无误后,现象依然与仿真不符࿰…...
