Quantum Circuit Transformations with a Multi-Level Intermediate Representation Compiler
量子计算承诺处理信息的显着方法,但需要新的工具来将程序表示编译为量子计算机所需的物理指令。在这里,我们提出了一种新的适应的多级中间表示(MLIR)集成到一个量子编译器,可用于检查程序执行。我们首先介绍了MLIR如何使量子线路转换在量子计算设备上高效执行,然后给出了一个基于所谓的镜像电路的编译器转换的例子。我们证明,在编译过程中插入的镜像电路可以通过评估几个超导和离子阱硬件平台上的量子线路精度来测试硬件性能。我们的研究结果验证MLIR作为一种高效和有效的方法,收集硬件相关的诊断,通过自动化的量子线路的转换。
2021-12-20 cs.PL quant-ph
Enhancing Translation Validation of Compiler Transformations with Large Language Models
本研究提出融合大语言模型的编译器转换翻译验证框架,以Alive2为基础工具,借助微调LLM预判转换可靠性并结合模糊测试找反例,解决传统形式化工具在LLVM转换等复杂场景的验证局限。
2024-02-01 cs.PL cs.SE
User-Directed Loop-Transformations in Clang
编译器的指令(如pragmas)可以帮助程序员将算法的语义与优化分开。这使代码易于理解,并且更容易针对不同的平台进行优化。像循环展开这样的简单转换已经在大多数主流编译器中实现了。我们最近提交了一份提案,建议将广义循环转换添加到OpenMP标准中。我们还在LLVM/Clang/Polly中进行实现,以展示其可行性和实用性。目前的原型允许应用常见的矩阵矩阵乘法优化模式。
2018-11-01 cs.PL
Homeostasis: Design and Implementation of a Self-Stabilizing Compiler
本文提出 Homeostasis 编译器框架,通过自动捕获程序变换并触发程序抽象稳定化,解决变换后抽象失效或不一致的问题,并在 IMOP 中验证其正确性、高效性与易用性。
2024-03-01 cs.PL
Learning to Make Compiler Optimizations More Effective
Technical University of Darmstadt(达姆施塔特工业大学);University of Stuttgart(斯图加特大学)
由于循环执行其主体多次,编译器开发人员非常重视其优化。然而,鉴于高度多样化的源代码和硬件,编译器仍然难以产生最佳的目标代码。可能的循环优化(包括它们的组合)的绝对数量进一步加剧了问题。今天的编译器使用硬编码的语法来决定何时、是否以及应用有限的优化集合中的哪一个。通常,这会导致非常不稳定的行为,使得编译器优化的成功取决于循环的精确编写方式。本文介绍了LoopLearner,它解决了编译器不稳定的问题,通过预测编写循环的方式将导致有效的编译代码。为此,我们训练一个神经网络,以找到语义不变的源代码级转换的循环,帮助编译器生成更有效的代码。我们的模型学习从原始源代码中提取有用的特征,并预测给定转换可能产生的加速。我们使用来自各种性能相关基准的1,895个循环来评估LoopLearner。在编译之前应用我们的模型认为最有利的转换会产生1.14倍的平均加速。当尝试前3个建议的转换时,平均加速甚至增加到1.29倍。将该方法与通过所有可用代码转换的详尽搜索进行比较,表明LoopLearner有助于在几个数量级的时间内识别最有益的转换。
2021-02-24 cs.LG cs.PL
SNIP: Speculative Execution and Non-Interference Preservation for Compiler Transformations
本文提出基于新模拟关系的证明方法,在推测语义下保持编译器变换的非干扰,发现并自动修复了寄存器分配中的未知安全缺陷,并在 libsodium 上验证。
2024-11-21 cs.CR cs.PL
Machine-Generated, Machine-Checked Proofs for a Verified Compiler (Experience Report)
National Technical University of Athens(雅典国立技术大学)
利用机器学习模型生成并验证编译器正确性证明,通过模板技术实现ANF转换的语义保持性证明,耗时96小时完成,展示了机器辅助证明的潜力与局限。
2026-02-23 cs.PL
Saying Hello World with GrGen.NET - A Solution to the TTC 2011 Instructive Case
我们通过解决2011年转换工具竞赛的Hello World案例来介绍图形转换工具GrGen.NET(www.grgen.net),该案例由一系列小的转换任务组成;对于每个任务,都给出了一个部分来解释我们的实现。
2011-11-21 cs.PL
Functional Logic Program Transformations
Institut für Informatik, Kiel University(基尔大学);University of Portland(波特兰大学)
本文探讨了函数逻辑编程在实现程序变换中的优势,通过非确定性操作与确定性方法的对比,评估了Curry语言及其中间表示FlatCurry的性能。
2026-01-19 cs.PL
Symbolic Computation via Program Transformation
符号计算是自动化程序分析的一种重要方法。大多数最先进的工具作为解释器执行符号计算,并直接维护符号数据。在本文中,我们表明,它是可行的,实际上是实用的,而不是使用基于编译器的策略。使用编译器工具,我们提出并实现了一个转换,需要一个标准的程序,并输出一个程序,执行语义等价,但部分符号,计算。转换后的程序在内部维护符号值,并直接对它们进行操作,因此程序可以由工具处理,而不支持符号操作。转换的主要动机是符号验证,但也有许多其他可能的用例,包括测试生成和concolic测试。此外,由于符号计算由程序直接处理,因此使用变换简化了工具。我们已经在LLVM位代码级别实现了转换。本文包括一个实验评估,基于显式状态的软件模型检查器作为验证后端。
2018-05-31 cs.PL
Row-Polymorphic Types for Strategic Rewriting
我们提出了一个类型系统的战略语言,表达程序转换重写规则的组合物。我们的行多态类型系统有助于编译器工程师编写正确的策略,静态拒绝重写,否则将在重写过程中失败的无意义的组合物在运行时。此外,我们的类型系统能够推理重写如何改变计算程序的形状。我们提出了一个形式化的语言在其类型系统,并展示了它的实际用途表示编译器优化策略。我们的类型系统为许多有趣的未来应用程序奠定了基础,包括验证程序转换的正确性和从编码为类型的规范合成程序转换。
2021-03-23 cs.PL
The Improved GP 2 Compiler
GP 2是一种基于规则的程序设计语言,它基于图变换规则,旨在方便程序分析和验证。用这种语言编写高效的程序是一个挑战,因为图匹配是昂贵的。GP 2通过提供根规则来解决这个问题,在温和的条件下,这些根规则可以在恒定的时间内匹配。最近,我们对Bak的GP 2-to-C编译器进行了一些更改,以加快图形程序的速度。一个关键的改进是一个新的动态数组数据结构,称为BigArray。这是一个指向条目数组的指针数组,大小依次加倍。为了证明新的实现可实现的速度,我们提出了一个减少程序,用于识别二进制DAG,以前运行在二次时间,但现在运行在线性时间与新的编译器编译时。
2021-01-05 cs.PL
Solving the TTC 2011 Compiler Optimization Task with metatools
作者的“元工具”是一个泛型编程工具的集合。这包括从数学上建立良好的规范生成Java源代码,以及为XML编码文本创建严格类型化的文档对象模型。在这种背景下,几乎每一个计算机内部结构都被视为一个“模型”,每一次计算都是一种模型转换。这个概念与由专门的工具和语言执行的“经典模型转换”有很大的不同。因此,对于TTC 2011的组织者以及作者来说,将元工具应用于其中一个挑战,即“编译器优化任务”,似乎很有希望。这是一份关于由此产生的经验的报告。
2011-11-21 cs.PL cs.SE
Lost in translation: Exposing hidden compiler optimization opportunities
现有的迭代编译和基于机器学习的优化技术已经被证明在实现比编译器的标准优化级别更好的优化方面非常成功。但是,它们并没有被设计为支持将编译器优化器的调优作为编译器日常开发周期的一部分。在本文中,我们首先建立所需的性能,一种技术必须表现出这样的调整。然后,我们介绍了一个增强的经典的夜间例行测试的编译器表现出所有必需的属性,因此,能够驱动编译器的共同优化器的改进和调整。这是通过利用收集的资源使用和编译信息来实现的,同时系统地利用在标准优化级别应用的转换的前缀。使用LLVM v6.0.1编译器进行的实验评估表明,新方法能够揭示两种流行处理器上隐藏的跨架构和依赖于架构的潜在优化:Intel i5- 6300 U和Raspberry Pi 3B+中使用的基于Arm Cortex-A53的Broadcom BCM 2837。作为一个案例研究,我们展示了如何从我们的方法的见解,使我们能够识别和删除一个显着的缺点的CFG简化通过LLVM v6.0.1编译器。
2020-07-07 cs.PL
RVSDG: An Intermediate Representation for Optimizing Compilers
中间表示(IR)是优化编译器的核心,因为程序的表示方式可能会增强或限制分析和转换。合适的IR专注于暴露最相关的信息,并建立不同编译器传递可以依赖的不变量。虽然以控制流为中心的IR似乎是命令式程序设计语言的天然选择,但编译器所需的分析越来越多地转向理解数据依赖关系,并同时在多个抽象层上工作。这在最近的发展中得到了部分证明,例如谷歌提出的MLIR。然而,在通用编译器中严格使用以数据流为中心的IR的可行性和可用性尚未进行评估,因为以前的作品没有提供实际的实现。提出了一种用于优化编译器的区域化值状态依赖图IR。RVSDG是以数据流为中心的IR,其中节点表示计算,边表示计算依赖性,并且区域捕获程序的分层结构。它代表了需求依赖形式的程序,隐式地支持结构化控制流,并在一个单一的IR模型的整个程序。我们提供了一个完整的规范的RVSDG,建设和破坏的方法,以及通过提出死节点和公共节点消除优化的实用程序。我们实现了一个原型编译器,并评估它的性能,代码大小,编译时间和代表性开销。我们的研究结果表明,RVSDG可以作为一个有竞争力的IR优化编译器,同时降低复杂性。
2020-03-17 cs.PL
CrypTorch: PyTorch-based Auto-tuning Compiler for Machine Learning with Multi-party Computation
The Pennsylvania State University(宾夕法尼亚州立大学)
研究针对基于多方计算的机器学习框架精度和性能下降问题,提出CrypTorch编译器框架。通过模块化编译、可执行图迭代测试及自动调优选择转换,平衡性能与精度,相比CrypTen实现显著端到端加速。
2026-07-27 cs.AI cs.CR cs.PL
The Petri-Nets to Statecharts Transformation Case
本文介绍了第六届转换工具竞赛的案例研究。这种情况是基于从Petri网到状态图的映射(即,从平面过程模型到分层过程模型)。案例描述将一个简单的映射阶段与一个涉及逐步销毁Petri-Net元素和相应的状态图元素层次结构的构建的阶段分开。虽然本案例研究的重点是解决方案的运行时性能比较,但我们也包括正确性测试以及评估转换语言和工具功能的奖励标准。
2013-12-02 cs.PL
OMP2HMPP: Compiler Framework for Energy Performance Trade-off Analysis of Automatically Generated Codes
我们提出了OMP2HMPP,一个工具,在第一步,自动翻译成各种可能的转换HMPP的OpenMP代码。在第二步中,OMP2HMPP执行所有变体以获得每个变换的性能和功耗。由此产生的权衡可以用来选择更方便的版本。在Polybench基准测试的一组代码上运行该工具后,我们发现最好的自动转换相当于专家手动完成的转换。与运行在2个四核处理器上的原始OpenMP代码相比,我们获得了31倍的平均速度提升和5.86倍的每瓦运算系数。
2015-06-09 cs.DC cs.PF cs.PL
Compiler-supported reduced precision and AoS-SoA transformations for heterogeneous hardware
Department of Computer Science, Institute for Data Science, Durham University(达勒姆大学计算机科学与数据科学研究所)
本研究通过编译器支持的降精度和AoS-SoA转换优化异构硬件上的粒子模拟性能,探讨了不同GPU平台下的加速效果与转换策略。
2025-12-05 cs.DC cs.MS cs.PL
LOOPer: A Learned Automatic Code Optimizer For Polyhedral Compilers
New York University Abu Dhabi(纽约大学阿布扎赫分校);Meta AI
LOOPer是首个基于深度学习的多面体自动调度器,能高效优化广泛程序并实现复杂转换序列,其在基准测试中表现优异。
2025-12-27 cs.DC cs.LG cs.PL
Loop Optimization Framework
LLVM编译器框架支持一系列循环转换,如向量化、分布和展开。每个转换都是由独立开发的专用通道执行的。在本文中,我们提出了一种集成的方法来循环优化:一个单一的专用通道,变异的循环结构DAG。每个转换都可以使用公共的基础设施,例如依赖性分析、转换先决条件等。
2018-11-01 cs.PL
Progress Report: A Deep Learning Guided Exploration of Affine Unimodular Loop Transformations
在本文中,我们提出了一个正在进行的工作,关于一个基于深度学习的方法,用于多面体编译器中的自动代码优化。所提出的技术探索仿射和非仿射循环变换的组合,以找到最小化给定程序的执行时间的变换序列。这种探索由基于深度学习的成本模型指导,该模型评估每个转换序列将产生的加速比。初步结果表明,所提出的技术实现了2.35倍的几何平均加速比最先进的多面体编译器(冥王星)。
2022-06-08 cs.LG cs.PL
A Calculus for Unreachable Code
本文提出首个不可达代码演算,用两类项重写规则刻画编译器删除与分支消除变换,并通过新逻辑关系证明正确性且对应 Racket、LLVM 实践。
2024-07-06 cs.PL
A Deep Learning Based Cost Model for Automatic Code Optimization
Massachusetts Institute of Technology(麻省理工学院);New York University Abu Dhabi(纽约大学阿布扎比分校);University of Technology of Troyes(特鲁瓦技术大学)
使编译器能够自动优化代码一直是编译器社区的长期目标。有效地解决这个问题需要使用精确的成本模型。这些模型预测应用一系列代码转换是否会减少程序的执行时间。由于微体系结构的复杂性,在现代x86体系结构中很难构建分析成本模型。在本文中,我们提出了一种新的基于深度学习的自动代码优化成本模型。该模型被集成到一个搜索方法中,并在Tiramisu编译器中实现,以选择最佳的代码转换。所提出的模型的输入是一组简单的功能,代表未优化的代码和一系列的代码转换。该模型预测了应用代码转换时的预期加速。与以前的模型不同,所提出的模型适用于完整的程序,不依赖于任何繁重的功能工程。所提出的模型只有16%的平均绝对百分比误差在预测加速完整的程序。该模型使Tiramisu能够自动找到匹配或优于最先进的编译器的代码转换,而不需要这些编译器所需的相同级别的繁重功能工程。
2021-04-11 cs.DC cs.LG cs.PL
Invited Paper: Initial Steps Toward a Compiler for Distributed Programs
本文介绍了Hydro项目设计的分布式系统编译器工具包,说明了通过类型转换与局部程序转换逐步将单节点程序转化为多种分布式设计点的优化方法。
2023-05-24 cs.DB cs.DC cs.PL
Improving the GP 2 Compiler
GP 2是一种基于图变换规则的实验性程序设计语言,旨在促进程序分析和验证。用这种语言编写高效的程序是困难的,因为图匹配是昂贵的,然而GP 2通过提供根规则来解决这个问题,在温和的条件下,可以使用GP 2到C编译器在恒定的时间内匹配。在这份报告中,我们记录了对编译器的各种改进;最值得注意的是引入节点列表来提高破坏性程序的迭代性能,这意味着通过减少二进制DAG识别只需要线性时间,而以前的实现需要二次时间。
2021-01-01 cs.LO 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
Formalizing and Checking Thread Refinement for Data-Race-Free Execution Models (Extended Version)
当优化并发程序中的线程时(手动或由编译器完成),必须保证结果线程是原始线程的细化。大多数有效优化的理论都是根据程序代码上的有效语法转换或线程执行轨迹上的有效转换来制定的。我们提出了一个新的理论制定,而不是在同步操作的线程的状态,并表明它提供了几个优点:它支持更多的优化,并导致更有效和更简单的程序细化检查。我们开发的SC-DRF执行模型(使用锁同步)的理论,并表明其在编译器测试设置中的应用程序导致大的性能改善。
2015-10-24 cs.PL
AI Powered Compiler Techniques for DL Code Optimization
在CPU上创建深度学习原语的高性能实现是一项具有挑战性的任务。包括多级缓存层次结构和CPU平台的宽SIMD单元在内的多种考虑因素影响了应用于性能优化的程序转换的选择。在本文中,我们提出了机器学习驱动的编译器技术来优化循环嵌套。我们采取双管齐下的方法来进行代码优化:我们首先应用高级优化来优化代码,以最佳地利用缓存内存。然后,我们执行低级别的、特定于目标的优化,以有效地对代码进行向量化,从而在机器的SIMD单元上运行良好。对于高级优化,我们使用多面体编译技术和深度学习方法。对于低级优化,我们使用目标特定的代码生成器,该代码生成器使用向量内在函数和强化学习(RL)技术生成代码,以找到代码生成器的最佳参数。我们对流行的深度学习工作负载中发生的各种矩阵乘法进行了实验评估。实验结果表明,本文提出的编译技术在串行运行和并行运行时分别获得了7.6倍和8.2倍的速度提升。
2021-04-12 cs.PL
PolyBlocks: A Compiler Infrastructure for AI Chips and Programming Frameworks
Polymage Labs(Polymage实验室);Indian Institute of Science(印度科学研究院)
PolyBlocks是一种基于MLIR的编译器基础设施,通过自动代码生成和优化,实现AI编程框架到AI芯片的高效转换。
2026-03-10 cs.LG cs.PL
Formal Performance and Compile Time Guarantees for Compiler Optimization Heuristics
Cornell University(康奈尔大学)
该研究针对编译器启发式算法的性能与编译时间缺陷,提出在Rocq中验证编译器 passes 的性能与编译时间属性,通过内联展开的概念验证实现语义保留及相关界的验证,为编译器优化的形式化保证提供方案。
2026-08-21 cs.PF cs.PL
REASONING COMPILER: LLM-Guided Optimizations for Efficient Model Serving
University of California San Diego(加州大学圣地亚哥分校)
推理编译器利用大语言模型进行编译优化,通过上下文感知决策提升样本效率,实现高效模型服务。
2026-02-04 cs.AI cs.LG cs.PL
T-LLM Compiler: Trusted LLM-based Code Optimization and Verification Framework
Huawei Technologies(华为技术有限公司)
本文提出T-LLM编译器,结合LLM代码变换、传统编译器与验证工具,在PolyBench/C基准测试上实现最高83.3%优化准确率,变换后代码平均提速26.7%,并开源了项目代码。
2026-08-18 cs.AI cs.CL cs.LG
Specifying and Executing Optimizations for Parallel Programs
编译器优化,通常表示为程序图上的重写,是所有现代编译器的核心部分。然而,即使是生产编译器也有bug,这些bug很难检测和解决。当编译并行程序时,问题只会变得更加复杂;从图形表示的选择到竞争条件的可能性,优化设计人员需要考虑一系列在处理单线程程序时不会出现的因素。在本文中,我们提出了PTRANS,一个特定领域的编译器转换的形式规格说明语言,并描述其可执行的语义。PTRANS的基本方法是将程序转换描述为带有时序逻辑边条件的控制流图上的重写。PTRANS的语法允许更清晰,更易于理解的程序优化规范;其可执行语义允许这些规范充当优化本身的原型,以便候选优化可以在继续将其包含在编译器中之前进行测试和改进。我们演示了使用PTRANS的状态,测试,并完善规范的冗余存储消除并行程序的优化。
2014-07-30 cs.LO cs.PL
Domain-Specific Multi-Level IR Rewriting for GPU
传统的编译器在单个通用中间表示(IR)上操作。这些IR通常是低级别的,接近机器指令。因此,依赖于特定于域的信息的优化要么是不可能的,要么需要复杂的分析来恢复丢失的信息。相比之下,多级重写实例化方言(IR)的层次结构,逐级降低程序,并在最合适的级别执行代码转换。我们证明了这种方法在天气和气候领域的有效性。特别是,我们开发了一个原型编译器和设计模板和GPU特定的方言的基础上,一组新引入的设计原则。我们发现,在LLVM的可扩展MLIR编译器基础设施之上实现的两个特定于域的优化(500行代码)足以超越最先进的解决方案。从本质上讲,多级重写预示着由在共享基础设施之上实现的特定于域和目标的方言组成的专用编译器时代的到来。
2020-07-27 cs.PL
Properties of Normalization for a math based intermediate representation
规范化变换在狄德罗纲领的编写中起着关键作用。转换是复杂的,很容易让bug不被发现。为了增加我们的信心,规范化的编译器的一部分,我们提供了一个正式的分析重写系统。我们证明重写系统是类型保持,值保持(张量值表达式),并终止。
2017-05-24 cs.PL
A Data-driven Analysis of Code Optimizations
New York University Abu Dhabi(阿布扎比纽约大学)
本文通过数据驱动方法生成大规模随机程序并应用随机优化序列,统计分析变换顺序对性能的影响,为设计更高效的自动代码优化算法提供指导。
2025-11-08 cs.PL
Don't Unroll Adjoint: Differentiating SSA-Form Programs
本文提出了基于源代码转换的反向模式算法微分(AD),特别是现代编译器使用的静态单赋值(SSA)形式。该方法可以支持控制流、嵌套、突变、递归、数据结构、高阶函数和其他语言构造,并且将输出提供给现有编译器以产生高效的差分代码。我们的实现是Julia语言的一个新的AD工具,称为Zygote,它提供了高级别的动态语义,同时透明地编译伴随代码。我们讨论了这种方法的好处,既可用性和性能的AD工具。
2019-03-09 cs.PL
Exploring the Impact of Affine Loop Transformations in Qubit Allocation
迄今为止,大多数量子编译器转换和量子比特分配技术要么是以窥视孔为中心,要么依赖于依赖于许多外部参数的滑动窗口。因此,仍然缺乏全局优化标准。在本文中,我们探讨了量子比特分配和映射的背景下,仿射回路变换的协同作用和影响。考虑到这一目标,我们已经实现了一个领域特定的语言和源到源编译器的量子线路,可以直接描述与仿射关系。我们进行了广泛的评估,跨越8个量子线路从文献中,3个不同的耦合图,4仿射变换(包括冥王星依赖距离最小化和Feautrier的最小延迟算法),和4量子比特分配器。我们的研究结果表明,使用全局优化标准的仿射变换可以有效地合作,在几个场景中与量子量子比特映射算法,以减少电路的深度,大小和分配时间。
2020-10-22 cs.ET cs.PL quant-ph
LLM Translation of Compiler Intermediate Representation
Barcelona Supercomputing Center, Universitat Politècnica de Catalunya(巴塞罗那超级计算中心,加泰罗尼亚理工大学);Barcelona Supercomputing Center(巴塞罗那超级计算中心)
本文提出IRIS-14B模型,通过训练实现GIMPLE到LLVM IR的翻译,展示了大型语言模型在编译器中间表示转换中的高效性与准确性。
2026-05-07 cs.AI cs.PL
Solving the TTC 2011 Reengineering Case with MOLA and Higher-Order Transformations
2011年转换工具竞赛的再工程案例涉及从Java源代码中自动提取状态机。转换任务涉及复杂的、非局部的模型元素匹配。本文使用模型转换语言MOLA解决了这一问题。MOLA解决方案使用高阶变换(HOT-s)来生成所需MOLA程序的一部分。所描述的HOT方法允许为通用任务创建可重用的复杂模型转换库,而无需修改模型转换语言的实现。因此,不是语言开发人员的模型转换用户可以更容易地实现所需的功能。
2011-11-21 cs.PL cs.SE
Correctness of Speculative Optimizations with Dynamic Deoptimization
高性能的动态语言实现大量使用推测性优化,以达到接近静态编译语言的速度。这些优化通常由实时编译器执行,该编译器在一组关于程序状态及其环境的假设下生成代码。在某些情况下,程序可以执行在不再有效的假设下编译的代码。然后,实现必须在运行中对程序进行去优化;这需要找到不依赖于无效假设的语义等效代码,将程序状态转换为目标代码所期望的状态,并转移控制。本文着眼于优化和去优化之间的相互作用,并表明,推理投机是令人惊讶的容易时,假设是明确的程序表示。这种见解是证明了编译器的中间表示,命名为\sourir,建模后的动态语言的高层次表示。传统的编译器优化,如常数折叠,死代码消除,函数内联被证明是正确的存在的假设。此外,本文还建立了特定于去优化的编译器转换的正确性:即无限制去优化,谓词提升和假设组合。
2017-11-15 cs.PL
One Tool, Many Languages: Language-Parametric Transformation with Incremental Parametric Syntax
我们提出了一种新的方法来构建源到源的转换,可以运行在多种程序设计语言,基于一种新的方式表示程序称为增量参数语法。我们在Cubix系统中的Haskell中实现了这种方法,并为C,Java,JavaScript,Lua和Python构建了增量参数语法。我们展示了一个运行在所有这些转换上的全程序重构工具,以及三个较小的转换,每个转换运行在几个转换上。我们的评估表明,(1)一旦编写了转换,几乎不需要为新语言配置它;(2)根据我们人类研究的参与者,以这种方式构建的转换输出可读代码,保留原始结构;(3)我们的转换仍然可以处理语言的角落情况,如编译器测试套件所验证的。
2018-10-01 cs.PL
MileStone: A Multi-Objective Compiler Phase Ordering Framework for Graph-based IR-Level Optimization
Faculty of Computer Science and Engineering, Shahid Beheshti University(沙希德·贝赫什提大学计算机科学与工程学院)
提出MileStone框架,将编译器阶段排序建模为多目标优化问题,利用图神经网络预测性能,并通过强化学习代理探索满足用户约束的优化序列,实现执行时间、代码大小和能耗的Pareto最优权衡。
2026-05-22 cs.PL cs.SE
Fractal Symbolic Analysis
重构编译器使用依赖性分析来证明程序的含义不会因转换而改变。依赖分析的一个众所周知的局限性是它只检查语句读写的内存位置,而不假设语句中的操作有任何特定的解释。利用这些操作的语义可以使用更广泛的转换集,并且对于优化重要代码(如使用旋转的LU因子分解)至关重要。程序的符号执行使得能够利用这样的语义属性,但是除了最简单的程序之外,它对所有程序都是难以处理的。在本文中,我们提出了一种新的形式的符号分析用于重组编译器。分形符号分析通过反复简化这些程序来比较程序及其转换版本,直到符号分析变得易于处理,确保简化程序的平等足以保证原始程序的平等。我们提出了一个分形符号分析的原型实现,并展示了如何使用它来优化LU分解与旋转的缓存性能。
2000-01-12 cs.PL
A Unified Framework for Automated Code Transformation and Pragma Insertion
提出统一框架,利用HLS编译器和非线性规划同时优化代码变换、pragma插入和块大小选择,以提升计算密集型内核的并行化和质量结果。
2025-03-01 cs.PL cs.SE
Analyzing Flowgraphs with ATL
本文为2013年转换工具竞赛(TTC 2013)的流程图案例研究提供了一个解决方案。从Java源代码开始,我们执行一系列的模型转换,以导出程序的简化模型,其控制流图和数据流图。最后,我们开发了一个模型转换,通过比较它与一组在特定领域的语言编写的流程规范,验证程序流。建议的解决方案已使用ATL实现。
2013-12-02 cs.PL cs.SE
Quantum Circuit Equivalence Checking: A Tractable Bridge From Unitary to Hybrid Circuits
Université Paris-Saclay(巴黎萨克雷大学);CEA, List(法国原子能和替代能源委员会,列表实验室);CNRS, CentraleSupélec, ENS Paris-Saclay, Inria, Laboratoire Méthodes Formelles(法国国家科学研究中心,中央理工-高等电力学院,巴黎萨克雷高等师范学院,法国国家信息与自动化研究所,形式方法实验室)
本文提出通过延迟测量和分离投影技术,解决混合量子电路等价性检查问题,提升处理能力并发现 Qiskit 编译器的意外行为。
2025-11-27 cs.PL quant-ph
Differential Testing of a Verification Framework for Compiler Optimizations (Experience Paper)
我们希望验证GraalVM编译器中优化阶段的正确性,该编译器由数千行执行复杂图形转换的复杂Java代码组成。我们已经建立了高层次的数据结构和操作的代码使用Isabelle/HOL定理证明器的模型,并可以正式验证这些高层次的操作的正确性。但剩下的挑战是:我们如何确保这些高级操作准确地反映Java正在做的事情?本文通过应用几种不同类型的差异测试来验证形式模型和Java代码具有相同的语义来解决这个问题。这些验证技术中的许多应该适用于其他正在构建真实代码的正式模型的项目。
2022-12-04 cs.LO cs.PL cs.SE
Compiling Language Definitions: The ASF+SDF Compiler
ASF+SDF元环境是一个交互式语言开发环境,其主要应用领域是领域专用语言的定义、程序分析和转换工具的生成、软件更新工具的生成以及通用规范和原型。它使用条件重写规则来定义语言的动态语义和其他面向工具的方面,因此生成的工具的有效性严重依赖于重写规则实现的质量。ASF+SDF重写规则编译器生成C代码,从而利用C的可移植性和当前C编译器的复杂优化能力,并避免潜在的抽象机器接口瓶颈。它可以处理大型(10 000+规则)的语言定义,并使用一个有效的运行时存储方案能够处理大型(1 000 000+节点)的条款。术语存储使用最大子术语共享(hash-consing),这在ASF+SDF中比在Lisp或SML中更有效。广泛的基准测试表明,生成的代码的时间和空间性能与当前最好的重写规则和函数式语言编译器一样好,甚至更好。
2000-07-06 cs.PL cs.SE
Nautilus: An Auto-Scheduling Tensor Compiler for Efficient Tiled GPU Kernels
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校)
Nautilus是一种新型张量编译器,通过端到端系统联合应用高层优化、表达式重写和瓷砖优化,实现从数学描述自动发现FlashAttention-3类内核,提升GPU性能。
2026-04-16 cs.LG cs.PL
Fortran performance optimisation and auto-parallelisation by leveraging MLIR-based domain specific abstractions in Flang
本研究将Flang MLIR通用编译器与Open Earth Compiler的MLIR stencil方言结合,开发Fortran模板提取转换与自动并行化方法,在Cray超算上实现2-10倍性能提升,支持多线程、分布式并行与GPU优化且无需修改串行源码。
2023-10-03 cs.DC cs.PL
Unleashing the Hidden Power of Compiler Optimization on Binary Code Difference: An Empirical Study
由于编译器优化是导致二进制代码语法差异的最常见原因,因此测试针对由不同编译器优化设置引起的更改的弹性已成为大多数二进制差异方法的标准评估步骤。例如,过去12年中的47篇顶级论文比较了默认优化级别编译的不同程序版本(例如,- GCC和LLVM中的Ox)。尽管他们中的许多人声称他们对编译器转换免疫,但还不清楚他们对非默认优化设置的抵抗力。特别是,我们已经观察到,对手探索非默认编译器设置,以放大恶意软件的差异。本文首先系统地研究了编译器优化对二进制代码差异的有效性。我们量身定制基于搜索的迭代编译的二进制代码差异的自动调整。我们开发BinTuner来搜索接近最优的优化序列,可以最大限度地提高二进制代码差异的数量。我们使用GCC 10.2和LLVM 11.0在SPEC基准测试(CPU 2006和CPU 2017),Coreutils和OpenSSL上运行BinTuner。我们的实验表明,以279到1,881次编译迭代为代价,BinTuner可以找到比一般-Ox设置更好的自定义优化序列。BinTuner的输出严重破坏了突出的二进制差分工具的比较。此外,由BinTuner调整的物联网恶意软件变体的检测率下降了50%以上。我们的研究结果为安全分析师描绘了一个警示故事,即攻击者有一种新的方法可以经济有效地变异恶意软件代码,研究界需要退后一步重新评估优化阻力评估。
2021-03-25 cs.PL cs.SE
HEC: Equivalence Verification Checking for Code Transformation via Equality Saturation
本文提出基于e-graph和MLIR的等价性检查框架HEC,能够全面验证源到源代码变换的正确性,在PolyBenchC上成功验证循环展开、分块和融合,并发现mlir-opt中的两个关键编译错误。
2025-06-06 cs.AR cs.PL