Sketch-Guided Equality Saturation: Scaling Equality Saturation to Complex Optimizations of Functional Programs
为不同的硬件和应用程序域生成高性能代码是一项挑战。带有map和reduce等模式的函数数组程序设计语言已经成功地与项重写结合起来,以定义和探索优化空间。然而,决定应用什么顺序的重写是困难的,并且对重写后的程序的性能有巨大的影响。相等饱和通过探索许多可能的方法来应用重写来避免这个问题,有效地在e图数据结构中表示许多等效程序。当重写函数语言术语时,等式饱和有一些限制,因为当前使用的是λ演算的朴素编码。我们提出了新的技术编码多态类型的lambda演算,并表明,有效的编码减少了运行时间和内存消耗的数量级的平等饱和。此外,等式饱和还不能扩展到复杂的编译器优化。这些从数千个重写步骤的长重写序列中出现,并且可能使用导致e图快速增长过大的重写规则的病态组合。本文介绍了\emph{sketch-guided equality saturation},一种允许程序员提供程序草图以指导重写的半自动技术。草图引导的等式饱和度评估了七个复杂的矩阵乘法优化,包括循环阻塞,矢量化和多线程。即使使用高效的λ演算编码,无指导的等式饱和也只能定位这些优化中最简单的两个,剩下的五个即使用一个小时的编译时间和60 GB的RAM也无法发现。通过指定三个或更少的草图指南,所有七个优化都可以在几秒钟的编译时间内找到,使用不到1GB的RAM,并生成高性能代码。
2022-06-03 cs.PF cs.PL
E-Graphs as a Persistent Compiler Abstraction
Ghent University(根特大学);University of Cambridge(剑桥大学);University College London(伦敦大学学院);University of Edinburgh(爱丁堡大学)
本文提出了一种在编译器中间表示中原生表示e-graph的方法,通过引入eqsat方言,实现等价饱和在不同中间表示层次上的统一应用,提升编译器优化能力。
2026-08-04 cs.PL
Rewrite Rule Inference Using Equality Saturation
许多编译器、合成器和定理证明器依赖重写规则来简化表达式或证明等价性。开发重写规则可能是困难的:规则可能是微妙的不正确的,有利可图的规则很容易错过,并且每当语义被调整时,规则集必须重新检查或扩展。大型规则集的应用也具有挑战性:冗余规则会减慢基于规则的搜索速度,并阻碍调试。本文探讨了如何平等饱和,一个有前途的技术,使用电子图应用重写规则,也可以用来推断重写规则。E-图可以复杂地表示指数大的枚举项和潜在的重写规则的集合。我们发现,平等饱和有效地缩小两个集,导致更快的合成更小,更一般的规则集。我们在一个名为ruler的工具中原型化了这些策略。与基于CVC 4构建的类似工具相比,ruler可以以25倍的速度合成5.8倍的小规则集,而不会影响验证功能。在一个端到端的案例研究中,我们展示了规则合成的规则,这些规则的性能与领域专家制作的规则一样好,并解决了一个流行的开源工具中的一个长期存在的问题。
2021-08-23 cs.PL
E-Path: Equality Saturation for Control-Flow Graphs
提出E-Path数据结构,通过将指令序列作为等价基本单元,在控制流图上实现等式饱和优化,避免破坏性重写并同时保留多个等价程序变体。
2026-05-27 cs.PL
Equality Saturation Guided by Large Language Models
本文提出LLM引导的等式饱和框架LGuess,通过引入e-graphs作为中间层,结合LLM预测重写检查点,解决了LLM生成可靠重写链困难的问题,在多元多项式分解任务上表现优异。
2025-11-01 cs.PL
Better Together: Unifying Datalog and Equality Saturation
本文提出 egglog,统一 Datalog 与等式饱和的定点推理系统,通过重写两个实际应用验证其更快、更简单且修复原有缺陷。
2023-05-15 cs.PL
Latent Idiom Recognition for a Minimalist Functional Array Language using Equality Saturation
本文提出用极简函数式数组语言结合等式饱和自动识别代码惯用法,匹配BLAS和PyTorch核心函数,实现1.46倍几何平均加速。
2023-12-29 cs.PL
Equality saturation theory exploration à la carte
University of Washington(华盛顿大学);University of Pennsylvania(宾夕法尼亚大学);University of California, Berkeley(加利福尼亚大学伯克利分校);Certora Inc.(Certora公司)
本文提出Enumo,一种可编程领域特定语言,通过核心操作符和快进策略,实现可扩展、可组合的等式饱和规则推断,在多个领域超越现有方法,甚至匹配手动规则集效果。
2026-09-21 cs.PL
Metatheory.jl: Fast and Elegant Algebraic Computation in Julia with Extensible Equality Saturation
我们引入Metatheory.jl:一种轻量级和高性能的通用符号和元编程框架,旨在简化编写复杂Julia元程序的行为,并基于最先进的等式饱和技术和动态第一类抽象树(AST)模式匹配系统,利用本机项重写系统显著增强Julia,其中AST系统可以以代数方式动态组合,充分利用语言强大的反射能力。我们的贡献允许执行通用的符号数学,操作,优化,合成或分析语法上有效的Julia表达式与一个干净简洁的编程接口,无论是在编译或执行程序。
2021-02-15 cs.PL cs.SC
Synthesizing Structured CAD Models with Equality Saturation and Inverse Transformations
最近的程序合成技术帮助用户定制CAD模型(例如,用于3D打印),将低级三角形网格反编译为构造性实体几何(CSG)表达式。如果没有循环或函数,编辑CSG可能需要许多协调的更改,并且现有的网格反编译器使用可能混淆高级结构的语法。本文提出了第二个反编译阶段,强大的“收缩”非结构化CSG表达式到更多的可编辑程序与地图和折叠操作。我们提出Szalinski,一个工具,使用平等饱和与语义保持CAD重写有效地搜索较小的等效程序。Szalinski依赖于逆变换,这是求解器推测性地将等价物添加到E图的一种新方法。我们定性评估Szalinski的案例研究,显示它如何与现有的网格反编译器组成,并证明Szalinski可以在几秒钟内缩小大型模型。
2020-04-12 cs.CG cs.PL
Scaling Program Synthesis Based Technology Mapping with Equality Saturation
本文提出Churchroad技术映射器,将等价饱和与程序综合工具结合,解决FPGA映射中草图编写困难及SMT求解器乘法处理弱的问题,可处理更大更复杂的设计且无需用户提供草图。
2024-11-19 cs.AR cs.PL
Rewrite System Showdown: Stochastic Search vs. EqSat
Stanford University(斯坦福大学);University of Washington(华盛顿大学)
本文通过五个基准测试比较等式饱和与随机搜索在等式程序优化中的性能,以评估e-graphs的实际效果。
2026-05-22 cs.PL
Small Proofs from Congruence Closure
可满足性模理论(SMT)求解器和等式饱和引擎必须从基于e图的同余闭包过程生成证明证书,以实现验证和冲突子句生成。较小的证明证书加快了这些活动。虽然生成最小尺寸的证明的问题是NP完全的,现有的证明最小化算法的同余闭包生成不必要的大证明,并引入渐近开销的核心同余闭包过程。在本文中,我们引入了一个O(n^5)时间算法,该算法在一个新的放松的“证明树大小”度量下生成最佳证明,该度量直接限制了证明大小。然后,我们放松这种方法进一步到一个实用的O(n \log(n))贪心算法,产生小的证明,没有渐近开销。我们在egg equality saturation toolkit中实现了我们的技术,产生了第一个验证equality saturation引擎。我们表明,我们的贪婪的方法在鸡蛋快速生成大大小于国家的最先进的Z3 SMT求解器上的3760基准语料库的证明。
2022-09-07 cs.PL
SPORES: Sum-Product Optimization via Relational Equality Saturation for Large Scale Linear Algebra
机器学习算法通常在线性代数(LA)中指定。LA表达式可以重写成更有效的形式,通过利用输入属性,如稀疏性,以及程序属性,如公共子表达式和可融合运算符。这些属性之间复杂的交互对执行开销的影响给编译器的优化带来了挑战。现有的编译器采用复杂的语法,使代码库复杂化,增加了维护成本,但无法搜索等价LA表达式的大空间,以找到最便宜的一个。我们介绍了一种通用的LA表达式优化技术,通过将LA表达式转换为关系代数(RA)表达式,优化后者,然后将结果转换回(优化)LA表达式。这种方法的一个主要优点是它是完整的,这意味着可以使用RA中的等价规则找到任何等价的LA表达式。挑战是搜索空间的主要大小,我们通过采用和扩展编译器中使用的技术来解决这个问题,称为相等饱和。我们将优化器集成到SystemML中,并在一系列机器学习任务中对其进行经验验证;我们表明,我们可以在SystemML中导出所有现有的手工编码优化,并执行新的优化,使速度从1.2倍提高到5倍。
2020-12-22 cs.DB cs.PL
Equality Saturation for Optimizing High-Level Julia IR
开发了基于 e-graphs 和等式饱和的系统,允许领域专家通过重写规则优化 Julia 代码,支持控制流、副作用、多重派发约束及类型传播,并提出 ILP 公式和 CFG 骨架松弛技术。
2025-07-13 cs.PL cs.SE
SkyEgg: Heterogeneity-Aware Hardware Synthesis via Equality Saturation
Peking University(北京大学)
SkyEgg提出异构感知的FPGA硬件综合框架,通过等式饱和统一代数重写与资源映射,联合调度优化,平均加速Vitis HLS 3.12倍、Altera HLS 3.18倍。
2026-09-15 cs.CL cs.PL
Optimizing Regular Expressions via Rewrite-Guided Synthesis
正则表达式在现代系统中无处不在。许多现实世界中的正则表达式是低效的,有时候它们很容易受到基于复杂性的攻击,虽然很多研究都集中在检测低效的正则表达式或在硬件级别加速正则表达式匹配,但我们研究了自动转换正则表达式以消除低效。我们把这个问题归结为一般的表达式优化,这是一个重要的任务,在各种领域甚至超越了编译器,例如,具有成本函数的语法引导合成(SyGuS)可用于此目的,但通过候选表达式的大空间的有序枚举可能过于昂贵。等式饱和是一种替代方法,它允许有效地构造和维护重写规则生成的表达式等价类,但该过程可能不会达到饱和,这意味着无法确认全局最小值。我们提出了一种新的方法,称为重写引导合成(ReGiS),其中一个独特的相互作用之间的SyGuS和平等饱和的重写有助于克服这些问题,从而在一个有效的,可扩展的框架表达式优化。
2022-09-29 cs.PL
HEC: Equivalence Verification Checking for Code Transformation via Equality Saturation
本文提出基于e-graph和MLIR的等价性检查框架HEC,能够全面验证源到源代码变换的正确性,在PolyBenchC上成功验证循环展开、分块和融合,并发现mlir-opt中的两个关键编译错误。
2025-06-06 cs.AR cs.PL
LLM-Guided Strategy Synthesis for Scalable Equality Saturation
Peking University(北京大学);School of Integrated Circuits(集成电路学院)
本文提出EggMind框架,通过领域特定语言EqSatL和LLM引导的代理工作流,高效合成可重用的等式饱和策略,提升资源质量平衡,减少成本和内存消耗。
2026-04-19 cs.AI cs.MA cs.PL
There and Back Again: A Netlist's Tale with Much Egraphin'
本文提出用等式饱和项重写框架统一处理EDA编译与反编译任务,并通过案例研究验证其特性与EDA需求高度契合。
2024-03-31 cs.AR cs.PL
Caviar: An E-graph Based TRS for Automatic Code Optimization
在编译器中使用术语重写系统(TRS)来简化和证明表达式。编译器中最先进的TRS使用贪心算法,该算法以预定义的顺序应用一组重写规则(其中一些规则不是公理化的)。这会导致失去简化某些表达式的能力。E-图和等式饱和度通过以紧凑的方式表示不同的等价表达式来回避这个问题,从中可以提取最佳表达式。虽然基于e图的TRS可能比使用贪心算法的TRS更强大,但它更慢,因为表达式可能具有大量或有时无限数量的等效表达式。加速e图的构造是使e图在编译器中实用化的关键。在本文中,我们提出了鱼子酱,一个基于电子图的TRS证明表达式编译器内。鱼子酱的主要优点是它的速度。它可以证明表达式比基本e图TRS快得多。它依赖于三种技术:1)一种在达到目标时停止e-graph增长的技术,称为迭代级别检查; 2)一种在相等饱和算法中平衡探索和利用的机制,称为脉冲鱼子酱; 3)一种在检测到不可证明模式时在达到饱和之前停止e-graph构建的技术,称为不可证明模式检测(NPPD)。我们评估鱼子酱的Halide,优化编译器,依赖于一个贪婪的算法为基础的TRS简化和证明其表达式。所提出的技术允许Caviar加速用于证明表达式的任务的e图扩展。它们还允许Caviar证明Halide的TRS无法证明的表达式,同时仅慢0.68倍。
2022-02-27 cs.PL