Compiler Auto-tuning through Multiple Phase Learning
针对编译器优化标志自动调优中搜索空间大、运行时成本高的问题,提出结合轻量级性能预测模型与新型粒子群算法的CompTuner方法,实验证明其性能显著优于现有最优技术。
2023-04-27 cs.PL
CompilerDream: Learning a Compiler World Model for General Code Optimization
School of Software, BNRist Tsinghua University Beijing China(软件学院、北师大清华大学北京中国);Tsinghua University(清华大学)
提出基于模型的强化学习方法CompilerDream,通过编译器世界模型模拟优化pass属性并训练智能体,实现跨应用场景和语言的通用代码优化,在零样本泛化上超越LLVM内置优化。
2026-05-28 cs.LG cs.PL
Quantitative Comparison of Credible Compilation and Verification In Coding Agent Compiler Development
National University of Singapore(新加坡国立大学);Massachusetts Institute of Technology(麻省理工学院)
本文通过首个由人类监督的验证编译器,比较了可信编译与验证两种编译验证方法的效率,发现验证需要更多开发工作量,且验证优化选择更不高效的算法,证书检查时间占主导。
2026-05-09 cs.PL
An Attempt to Catch Up with JIT Compilers: The False Lead of Optimizing Inline Caches
本文尝试通过动态二进制修改优化内联缓存以提升 AoT JavaScript 编译器性能,但实验表明减少内存访问在当代架构上无法加速,揭示了编译器优化策略的新方向。
2025-02-27 cs.PL
CompilerGym: Robust, Performant Compiler Optimization Environments for AI Research
Facebook(脸书)
将人工智能(AI)技术应用于编译器优化的兴趣正在迅速增加,但编译器研究具有很高的进入门槛。与其他领域不同,编译器和人工智能研究人员无法访问能够实现快速迭代和想法开发的数据集和框架,并且开始需要大量的工程投资。我们需要的是一个简单的,可重复使用的实验基础设施,为现实世界的编译器优化任务,可以作为一个共同的基准比较技术,并作为一个平台,以加速在该领域的进展。我们介绍了一组环境,现实世界的编译器优化任务,和一个工具包,用于暴露新的优化任务的编译器研究人员。QuiderGym使任何人都可以通过一个易于使用的包来实验生产编译器优化问题,无论他们对编译器的经验如何。我们以流行的OpenAI Gym接口为基础,使研究人员能够使用Python和熟悉的API与编译器进行交互。我们描述了ChiperGym的架构和实现,包括三个编译器环境的优化空间和计算效率的特点,并提供了广泛的经验评估。与以前的作品相比,QuererGym提供了更大的数据集和优化空间,计算效率提高了27倍,具有容错能力,并且能够检测底层编译器中的可重复性错误。为了让任何人都能轻松地尝试编译器-无论他们的背景如何-我们的目标是加速AI和编译器研究领域的进展。
2021-12-22 cs.AI cs.LG cs.PF
Compilation Forking: A Fast and Flexible Way of Generating Data for Compiler-Internal Machine Learning Tasks
更复杂的优化决策通常基于围绕几个已建立的基准套件的手工制作的算法。或者,它们可以从编译期间产生的特性和性能数据中学习。然而,基于机器学习模型的数据驱动编译器优化需要大量高质量的数据集进行训练,以便匹配甚至优于现有的人工编译器。在静态编译设置中,相关的工作已经通过迭代编译解决了这个问题。然而,动态编译器可能会根据动态选择的编译策略产生不同的数据,这会简化可比数据的生成。我们提出编译分叉,一种技术,用于生成一致的功能和性能数据,从任意的,动态编译的程序。在单个程序运行中执行具有相同分析和编译历史的不同版本的程序部分,以最小化动态编译和运行时环境引起的噪声。我们的方法有利于大规模的编译器优化决策的性能评估。此外,编译分叉通过提供用于模型训练的数据来支持基于机器学习创建特定于域的编译策略。我们以一种与编程语言无关的方式在GraalVM编译器中实现了编译分叉。为了评估生成的数据的质量,我们训练了几个机器学习模型,以取代编译器的循环相关优化。当比较基准测试套件性能的几何平均值时,训练的模型与高度调优的编译器算法表现得同样好。对少数单个基准测试的较大影响范围从20%的加速到17%的减速。所提出的方法可以在任何动态编译器中实现。我们相信,它可以帮助分析编译决策,并利用机器学习的使用到动态编译。
2022-06-28 cs.PL
Solving the TTC 2011 Compiler Optimization Case with GReTL
本文讨论了TTC 2011年锅炉优化案例的GReTL解决方案。所提交的解决方案涵盖了常量折叠任务和指令选择任务。实现了验证图有效性的验证器,并根据扩展的要求提供了一些附加的测试图。
2011-11-21 cs.PL cs.SE
Enhancing Compiler Optimization Efficiency through Grammatical Decompositions of Control-Flow Graphs
针对树分解忽视控制流图稀疏性且计算成本高的问题,提出 SPL 分解框架及图上 PCSP 通用解法,用于寄存器分配、LOSPRE 和存储区选择指令放置,并经实验证明显著优于现有方法。
2025-07-22 cs.PL
Souper: A Synthesizing Superoptimizer
如果我们可以自动地导出编译器优化,我们就可以避开创建和维护高质量编译器所涉及的一些重大工程挑战。我们开发了Souper,一个合成超优化器,看看这些想法在LLVM的上下文中可能会被推进多远。在此过程中,我们发现Souper的中间表示与Microsoft Visual C++中的中间表示非常相似,因此我们也将Souper应用于该编译器。这两个编译器的发布或即将发布的版本都包含了Souper建议的优化,但都是手工实现的。或者,当Souper用作全自动优化通道时,它编译的Clang编译器二进制文件比LLVM编译的小约3 MB(4.4%)。
2018-04-06 cs.PL
A Survey on Compiler Autotuning using Machine Learning
University of Toronto(多伦多大学);Millersville University of Pennsylvania(宾夕法尼亚米勒斯维尔大学);University of Delaware(特拉华大学);Politecnico di Milano(米兰理工大学)
自20世纪90年代中期以来,研究人员一直试图使用基于机器学习的方法来解决许多不同的编译器优化问题。这些技术主要提高了所获得的结果的质量,更重要的是,使得解决两个主要的编译器优化问题变得可行:优化选择(选择应用哪些优化)和阶段排序(选择应用优化的顺序)。由于应用程序的进步、编译器优化数量的增加以及新的目标体系结构,编译器优化空间继续增长。编译器中的泛型优化传递不能完全利用新引入的优化,因此,不能跟上增加选项的步伐。本综述总结并分类了在编译器优化领域使用机器学习的最新进展,特别是在(1)选择最佳优化和(2)优化的阶段排序这两个主要问题上。该调查突出了迄今为止所采取的方法,所获得的结果,不同方法之间的细粒度分类,最后,该领域的有影响力的论文。
2018-09-03 cs.LG cs.PL
Accelerating C/C++ Pointer Analysis via Compiler-Based Offline Simplifications
The State Key Laboratory of Blockchain and Data Security, Zhejiang University(浙江大学区块链与数据安全国家重点实验室)
该研究提出在指针分析前对中间表示应用语义保持的编译器优化的模块化方法,经实证验证可使指针分析最高加速3.14倍、内存减少1.94倍且精度基本不变,为相关领域提供了新方向。
2026-08-06 cs.PL
Memory Simulations, Security and Optimization in a Verified Compiler
针对编译器安全特性与优化需跨内存布局模拟原程序的问题,本文通过内存扩展、注入及未定义值细节,在CompCert验证编译器中实现并证明了两项安全特性和一项尾递归消除优化的正确性。
2023-12-13 cs.LO cs.PL
The Next 700 ML-Enabled Compiler Optimizations
IIT Hyderabad(印度理工学院海得拉巴分校);Google DeepMind(谷歌DeepMind);Google(谷歌公司)
本文提出ML-Compiler-Bridge,旨在解决ML模型与编译器优化集成中的模块化、性能和框架独立性问题,并在多个编译器、优化问题和gym基础设施上验证了其训练与推理的有效性。
2023-11-17 cs.LG cs.PF cs.PL
Relaxed Peephole Optimization: A Novel Compiler Optimization for Quantum Circuits
在本文中,我们提出了一种新的量子编译优化,称为放松窥视孔优化(RPO)的量子计算机。RPO利用可以由编译器静态确定的单量子位状态信息。我们定义一个量子比特是在一个基本状态,在一个给定的时间点,它的状态是在X-,Y-或Z-基础。当基础量子比特被用作量子门的输入时,存在强度降低的机会,其用等效但更便宜的操作代替量子操作。与现有的量子程序的窥视孔优化相比,不同之处在于,我们提出的优化不需要相同的酉矩阵,从而命名为“放松”窥视孔优化。我们还扩展了我们的方法来优化量子门时,一些输入量子位是在已知的纯态。这两种优化,即量子基态优化(QBO)和量子纯态优化(QPO),都在IBM的Qiskit编译器中实现。我们的实验结果表明,我们提出的优化通过是快速和有效的。与Qiskit编译器中最积极的优化水平相比,使用我们的编译器优化的电路获得了高达18.0%(平均11.7%)的CNOT门和高达8.2%(平均7.1%)的编译时间降低。在实际量子计算机上运行时,由于减少了门数,3量子比特量子相位估计算法的成功率提高了2.30倍。
2020-12-14 cs.PL quant-ph
Meta Large Language Model Compiler: Foundation Models of Compiler Optimization
Meta AI
本文提出 Meta LLM Compiler,基于 Code Llama 在 5460 亿 token 的 LLVM-IR 与汇编代码上训练,用于代码大小优化和汇编反汇编,分别达到自动调优潜力的 77% 和 45% 往返率。
2024-06-27 cs.AI cs.PL
Formal Performance and Compile Time Guarantees for Compiler Optimization Heuristics
Cornell University(康奈尔大学)
该研究针对编译器启发式算法的性能与编译时间缺陷,提出在Rocq中验证编译器 passes 的性能与编译时间属性,通过内联展开的概念验证实现语义保留及相关界的验证,为编译器优化的形式化保证提供方案。
2026-08-21 cs.PF cs.PL
AwareCompiler: Agentic Context-Aware Compiler Optimization via a Synergistic Knowledge-Data Driven Framework
University of Chinese Academy of Sciences(中国科学院大学);Institute of Software Chinese Academy of Sciences(中国科学院软件研究所);Hangzhou Institute for Advanced Study at UCAS(UCAS杭州高等研究 institute);Nanyang Technological University(南洋理工大学)
针对编译器优化中语义错位、交互低效和奖励稀疏问题,提出AwareCompiler智能体框架,通过知识整合、自适应pass生成和混合训练,在标准基准上显著提升性能与效率。
2025-10-13 cs.AI 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
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
Pearl: Automatic Code Optimization Using Deep Reinforcement Learning
提出基于深度强化学习的框架Pearl,通过新颖的动作空间表示、结果缓存与预训练,实现通用循环嵌套代码优化并泛化至未见程序,性能优于现有编译器。
2025-06-02 cs.PL
Correctness of Speculative Optimizations with Dynamic Deoptimization
高性能的动态语言实现大量使用推测性优化,以达到接近静态编译语言的速度。这些优化通常由实时编译器执行,该编译器在一组关于程序状态及其环境的假设下生成代码。在某些情况下,程序可以执行在不再有效的假设下编译的代码。然后,实现必须在运行中对程序进行去优化;这需要找到不依赖于无效假设的语义等效代码,将程序状态转换为目标代码所期望的状态,并转移控制。本文着眼于优化和去优化之间的相互作用,并表明,推理投机是令人惊讶的容易时,假设是明确的程序表示。这种见解是证明了编译器的中间表示,命名为\sourir,建模后的动态语言的高层次表示。传统的编译器优化,如常数折叠,死代码消除,函数内联被证明是正确的存在的假设。此外,本文还建立了特定于去优化的编译器转换的正确性:即无限制去优化,谓词提升和假设组合。
2017-11-15 cs.PL
Decompiling Rust: An Empirical Study of Compiler Optimizations and Reverse Engineering Challenges
本文通过基准驱动评估与自动化评分框架,量化分析 Rust 核心特性及构建模式对反编译质量的影响,并结合案例揭示泛型、trait 和错误处理带来的逆向挑战。
2025-07-24 cs.PL cs.SE
Compiler generated feedback for Large Language Models
Meta AI;Rice University(莱斯大学)
本文提出一种结合编译器反馈与大型语言模型的LLVM汇编代码优化新范式,通过将编译验证结果反馈给模型进行迭代优化,相比-Oz额外提升0.53%,但发现简单采样技术在多样本下性能更优。
2024-03-18 cs.LG 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
MLGO: a Machine Learning Guided Compiler Optimizations Framework
Google, Inc.(谷歌公司);Carnegie Mellon University(卡内基梅隆大学)
利用机器学习(ML)技术进行编译器优化已经在学术界得到了广泛的研究和探索。然而,ML在通用、行业实力编译器中的采用还没有发生。我们提出了MLGO,一个框架,系统地集成ML技术在工业编译器- LLVM。作为一个案例研究,我们提出了用机器学习模型取代LLVM中基于机器学习的内联大小优化的细节和结果。据我们所知,这项工作是ML在真实世界环境中复杂编译器通道中的第一次完全集成。它位于主LLVM存储库中。我们使用两种不同的ML算法:策略梯度和演化策略,训练内联的大小模型,并实现高达7\%的大小减少,相比,最先进的LLVM-Oz。在一个语料库上训练的同一个模型,可以很好地推广到现实世界的各种目标,以及经过几个月的积极开发后的同一组目标。训练模型的这种属性有利于在现实世界中部署ML技术。
2021-01-13 cs.LG cs.PL
Finding Missed Code Size Optimizations in Compilers using LLMs
Meta;FAIR at Meta(Meta FAIR研究院)
本文提出一种结合LLM与差分测试的简单方法,用于发现C/C++、Rust和Swift编译器中遗漏的代码大小优化,已报告24个已确认缺陷。
2024-12-31 cs.LG cs.PL cs.SE
The sufficiently smart compiler is a theorem prover
Haskell编译器GHC能够证明Haskell代码之间的非平凡等式,凭借其积极的优化器,特别是编译器中的术语重写引擎。我们在GHC插件中用一个令人惊讶的小代码演示了这一点,解释了我们必须转动的旋钮,讨论了这种方法的局限性和相同想法的相关应用,即测试Haskell库中具有特定于域的优化的承诺。
2018-05-21 cs.PL
An Optimizing Just-In-Time Compiler for Rotor
本文为Rotor扩展了一个面向IA-32的三阶段优化型即时编译器,通过控制流图与数据依赖图执行多项优化,在编译开销极小的情况下显著提升了生成代码的执行速度。
2024-11-14 cs.PL
QSSA: An SSA-based IR for Quantum Computing
量子计算硬件发展迅速。与此同时,用于量子计算的程序设计语言和程序优化工具也在激增。现有的量子编译器使用中间表示(IR),其中量子程序被描述为电路。这样的IR无法利用编译器优化的现有工作。在这样的IR中,静态地检查物理约束是不平凡的,例如不可克隆定理,该定理规定量子位不能被复制。我们介绍了QSSA,这是一种基于静态单一赋值(SSA)的新型量子IR,它使数十年的编译器优化研究能够应用于量子编译。QSSA将量子操作建模为无副作用。操作的输入和输出是一一对应的;量子位不能被创建或销毁。因此,我们的IR支持一个静态分析过程,该过程在编译时验证无克隆。量子电路完全编码在IR的def-use链中,使我们能够利用SSA表示的现有优化传递,例如冗余消除和死码消除。在QASMBench和IBM Quantum Challenge数据集上运行我们基于QSSA的编译器,我们表明我们的优化对IBM的Qiskit量子编译器基础设施进行了优化。QSSA允许我们使用SSA表示的鲁棒理论来表示、分析和转换量子程序,将量子编译带入了易于理解的理论和实践领域。
2021-09-06 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
AI Coding Agents Need Better Compiler Remarks
Northwestern University(西北大学)
本文研究了编译器注释对AI代理优化程序的影响,发现精确注释能显著提升性能,而模糊注释会导致语义错误,结论是未来编译器需提供结构化反馈以支持自主性能工程。
2026-04-15 cs.PL
Solving the TTC 2011 Compiler Optimization Task with metatools
作者的“元工具”是一个泛型编程工具的集合。这包括从数学上建立良好的规范生成Java源代码,以及为XML编码文本创建严格类型化的文档对象模型。在这种背景下,几乎每一个计算机内部结构都被视为一个“模型”,每一次计算都是一种模型转换。这个概念与由专门的工具和语言执行的“经典模型转换”有很大的不同。因此,对于TTC 2011的组织者以及作者来说,将元工具应用于其中一个挑战,即“编译器优化任务”,似乎很有希望。这是一份关于由此产生的经验的报告。
2011-11-21 cs.PL cs.SE
Glow: Graph Lowering Compiler Techniques for Neural Networks
本文介绍了Glow的设计,一个机器学习编译器的异构硬件。这是一种实用的编译方法,可以为多个目标生成高度优化的代码。Glow将传统的神经网络拓扑图简化为两阶段的强类型中间表示。高级中间表示允许优化器执行特定于域的优化。低层的基于编译的仅地址中间表示允许编译器执行与存储器相关的优化,例如指令调度、静态存储器分配和副本消除。在最底层,优化器执行特定于计算机的代码生成,以利用专门的硬件功能。Glow具有一个降低阶段,使编译器能够支持大量的输入运算符以及大量的硬件目标,无需在所有目标上实现所有运算符。降低阶段旨在减少输入空间,并允许新的硬件后端专注于少量的线性代数基元。
2019-04-03 cs.PL
Compiler Optimization for Irregular Memory Access Patterns in PGAS Programs
不规则的内存访问模式给分布式内存系统带来了性能和用户生产力方面的挑战。它们可以导致细粒度的远程通信,并且数据访问模式通常直到运行时才知道。分区全局地址空间(PGAS)编程模型通过向用户提供类似于单个共享地址空间的分布式内存系统视图来解决这些挑战。然而,这种观点经常导致程序员编写导致细粒度远程通信的代码,这可能导致性能低下。先前的工作表明,用Chapel(一种高级PGAS语言)编写的不规则应用程序的性能可以通过手动应用优化来提高。然而,手动应用这种优化会降低Chapel和PGAS模型提供的生产率优势。我们提出了一个检查器执行器为基础的编译器优化的教堂程序,自动执行远程数据复制。虽然其他PGAS语言也有类似的编译器优化,但Chapel中的高级功能(如隐式处理器亲和性)给编译器优化带来了新的挑战。我们评估我们的优化在两个不规则的应用程序的性能。我们的研究结果表明,在具有低延迟互连的Cray XC系统上,总运行时间可以提高52倍,在具有Infiniband互连的标准Linux集群上可以提高364倍,这表明可以在不牺牲用户生产力的情况下实现显着的性能提升。
2023-03-24 cs.DC cs.PL
Compiler-Grounded Hierarchical Diagnosis for LLM-Based Triton Kernel Optimization
Huawei Technologies Co., Ltd(华为技术有限公司)
研究针对大语言模型内核优化中编译器优化失败原因难揭示的问题,提出基于编译器的Triton内核分层优化框架,通过跨层诊断实现从模式分类到源级重写的优化,在Ascend NPU上显著加速Triton内核。
2026-07-28 cs.AI cs.PL
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
Survey on Combinatorial Register Allocation and Instruction Scheduling
寄存器分配(将变量映射到处理器寄存器或存储器)和指令调度(重新排序指令以增加指令级并行)是在编译器中生成高效汇编代码的基本任务。在过去的三十年里,组合优化已经成为这两个任务的传统启发式算法的替代方案。组合优化方法可以根据模型提供最优解决方案,可以精确地捕获冲突决策之间的权衡,并且以增加编译时间为代价更灵活。本文提供了一个详尽的文献综述和分类的组合优化方法,寄存器分配和指令调度,重点是在这种情况下,最适用的技术:整数规划,约束规划,分区布尔二次规划,枚举。编译器和组合优化的研究人员可以从识别该领域的发展,趋势和挑战中受益;编译器从业者可以识别机会并掌握应用组合优化的潜在好处。
2019-06-07 cs.PL
KPerfIR: Towards an Open and Compiler-centric Ecosystem for GPU Kernel Performance Tooling on Modern AI Workloads
提出KPerfIR,一种以编译器为中心的多层次基础设施,通过将性能分析集成到编译器工作流中,为现代AI工作负载提供低开销、高精度的GPU内核性能分析与优化洞察。
2025-05-27 cs.DC cs.PL
Specifying and Executing Optimizations for Parallel Programs
编译器优化,通常表示为程序图上的重写,是所有现代编译器的核心部分。然而,即使是生产编译器也有bug,这些bug很难检测和解决。当编译并行程序时,问题只会变得更加复杂;从图形表示的选择到竞争条件的可能性,优化设计人员需要考虑一系列在处理单线程程序时不会出现的因素。在本文中,我们提出了PTRANS,一个特定领域的编译器转换的形式规格说明语言,并描述其可执行的语义。PTRANS的基本方法是将程序转换描述为带有时序逻辑边条件的控制流图上的重写。PTRANS的语法允许更清晰,更易于理解的程序优化规范;其可执行语义允许这些规范充当优化本身的原型,以便候选优化可以在继续将其包含在编译器中之前进行测试和改进。我们演示了使用PTRANS的状态,测试,并完善规范的冗余存储消除并行程序的优化。
2014-07-30 cs.LO cs.PL
Memory and compiler optimizations for low-power and -energy
嵌入式系统变得越来越普遍,特别是自主系统,并且显然趋向于无处不在。在这样的系统中,低功耗和低能耗变得越来越重要。此外,这些问题在(大规模)多处理器系统中也变得至关重要,无论是在一台机器中还是在更广泛的网格中。所面临的各种问题涉及自主性、供电可能性、散热甚至纯粹的能源成本。虽然它已经在硬件中研究了很长时间,但能量优化在软件中的应用更近。因此,在本文中,我们旨在提高语言和编译社区对低功耗和低能耗问题的认识。因此,我们广泛但简要地调查技术和解决方案,这个能源问题,集中在编译器优化和存储管理的上下文中的几个具体方面。
2006-10-05 cs.PF cs.PL
Automated Code Optimization with E-Graphs
本文提出了一个先进的,通用的和高层次的代码重写和分析系统的Julia程序设计语言,提供应用的平等饱和存在的多重分派和元编程。我们展示了我们的系统如何实际解决一些具有挑战性的问题:程序员可以实现自己的高层次的编译器优化其特定领域的科学计划,而不要求他们在所有的编译器专家?这些优化器是否可以由用户在相同的语言和他们想要优化的相同程序中实现,从而解决两种语言的问题?这些编译器优化器是否可以以高级方式编写,如方程式,而无需担心重写顺序?因此,符号数学可以进行高级编译器优化,反之亦然吗?
2021-12-30 cs.PL cs.SC
Generation of Compiler Backends from Formal Models of Hardware
本文提出从硬件形式模型自动生成编译器后端的方法,利用自动推理算法提升优化能力与正确性保证,缩短开发时间,并通过Glenside和Lakeroad两个案例验证了该方法的有效性。
2024-08-27 cs.AR cs.PL
Profile Guided Optimization without Profiles: A Machine Learning Approach
Meta, Inc.(Meta公司);Meta AI
概要文件引导优化是一种基于动态行为提高编译器优化能力的有效技术,但收集概要文件数据昂贵、繁琐,并且需要定期更新以保持新鲜。我们提出了一种新颖的统计方法来推断分支概率,可以提高在没有配置文件引导优化的情况下编译的程序的性能。我们使用从具有分支概率信息的大型二进制语料库中收集的信息执行离线训练。编译器使用学习的模型来预测常规未插装程序的分支概率,然后编译器可以使用该分支概率来通知优化决策。我们将我们的技术直接集成在LLVM中,补充现有的人工工程编译器原理。我们评估我们的技术在一套基准测试,展示了一些收益编译没有配置文件信息。在部署中,我们的技术不需要分析运行,对编译时间的影响可以忽略不计。
2022-01-04 cs.LG cs.PL
Automatic Compiler-Based Data Structure Generation
优化编译器主要用于优化控制流程。数据结构的优化留给程序员,并且程序员的责任是设计数据结构以适合目标硬件。需要非常特定的数据结构来利用某些硬件功能,例如高速缓存行大小、地址对齐、向量宽度和存储层次结构细节。因为优化编译器不以数据结构为目标,所以这些特性被显式地编码在程序规范中。这会导致复杂的程序从编译器中隐藏计算的本质,从而导致编译器分析技术崩溃并阻碍编译器优化的应用。为了解决这个问题,我们建议走向规范的程序,而不明确指定的数据结构。编译器将自动生成实际的数据结构和从该规范开始的可执行代码。在本文中,我们介绍了一个基于编译器的框架,以支持这种自动生成的数据结构,使编译器超越了单独的控制流的优化,也针对数据的组织和访问的方式。作为这个框架的有效性的案例研究,我们提出了一个详细的描述和实验结果的应用所提出的技术,自动生成数据结构稀疏矩阵计算。我们表明,这种方式可以生成稀疏的数据结构,到目前为止,只有指定的手和自动实例化的例程和相应的数据结构可以发现,优于现有的三个稀疏代数库的实现。
2022-03-14 cs.DC cs.PL
LOOPerSet: A Large-Scale Dataset for Data-Driven Polyhedral Compiler Optimization
New York University Abu Dhabi(纽约大学阿布扎赫分校)
LOOPerSet是一个大规模数据集,用于数据驱动的多面体编译器优化,通过提供2800万个标记数据点,促进学习成本模型和自动调度的研究。
2025-12-27 cs.LG cs.PF cs.PL
Evaluating Compiler Optimization Impacts on zkVM Performance
ETH Zurich(苏黎世联邦理工学院);UCL Centre for Blockchain Technologies(伦敦大学学院区块链技术中心);zkSecurity(zk安全)
本文研究了编译器优化对zkVM性能的影响,通过优化LLVM传递提升了zkVM执行效率,展示了编译器优化在零知识证明系统中的应用潜力。
2026-01-22 cs.PF cs.PL
Portable models as a replacement for industrial heuristics in compiler optimizations
Department of Compiler Technologies(编译器技术系);Ivannikov Institute for System Programming (ISP) of the Russian Academy of Sciences(俄罗斯科学院伊万尼科夫系统编程研究所)
研究在特定编译器场景预测函数内联决策,提出便携式内联预测框架,利用生产编译器诊断监督,提取器准备训练数据。构建数据集评估,CatBoost表现良好,特征分析揭示信号集中区域,为轻量级系统提供内联决策预测方案。
2026-07-21 cs.PL cs.SE
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
Deep Data Flow Analysis
Facebook AI Research(Facebook人工智能研究院);ETH Zürich(苏黎世联邦理工学院);University of Edinburgh(爱丁堡大学)
编译器架构师在为编译器优化构建算法时越来越多地关注机器学习。自动启发式设计的承诺将编译器工程师从程序、体系结构和其他优化的复杂交互中解放出来,这是诱人的。然而,大多数机器学习方法甚至不能复制对数据流分析的最简单的抽象解释,而这些解释对于做出良好的优化决策至关重要。这种情况必须改变,机器学习才能成为编译器语言学的主导技术。为此,我们提出了ProGraML -机器学习的程序图-一种独立于语言的,可移植的深度学习整体程序语义表示。为了对当前和未来的编译器分析学习技术进行基准测试,我们引入了LLVM的461 k中间表示(IR)文件的开放数据集,涵盖了五种源程序设计语言,以及15.4M相应的数据流结果。我们制定的数据流分析作为一个MPNN,并表明,使用ProGraML,标准的分析可以学习,提高下游编译器优化任务的性能。
2020-11-21 cs.LG cs.PL
WhiteFox: White-Box Compiler Fuzzing Empowered by Large Language Models
University of Illinois at Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);Huazhong University of Science and Technology(华中科技大学)
WhiteFox 是首个利用大语言模型结合编译器源代码信息的白盒模糊测试器,通过多智能体框架分析优化源码并生成针对性测试,在三大深度学习编译器中触发深层优化的能力最高超出最先进方法 8 倍,并发现 101 个缺陷。
2024-09-04 cs.LG cs.PL cs.SE
Magellan: Autonomous Discovery of Novel Compiler Optimization Heuristics with AlphaEvolve
Google(谷歌);Google DeepMind(谷歌DeepMind);Cornell University(康奈尔大学)
Magellan通过AlphaEvolve自主发现新型编译器优化启发式方法,提升编译器优化效率与性能。
2026-01-28 cs.AI cs.LG cs.PL
Offline Imitation Learning from Multiple Baselines with Applications to Compiler Optimization
Google Research(谷歌研究院);Google(谷歌公司)
本文针对多个互补基线策略的离线模仿学习问题,提出一种极小极大最优的简单算法,并将其应用于编译器内联优化,以生成更小二进制文件,实验表明该策略优于标准强化学习初始策略。
2024-03-28 cs.LG cs.PL
BaCO: A Fast and Portable Bayesian Compiler Optimization Framework
Lund University(隆德大学);Federal University of Minas Gerais(米纳斯吉拉斯联邦大学);University of Münster(明斯特大学);Stanford University(斯坦福大学);University of Illinois UC(伊利诺伊大学厄巴纳-香槟分校);University of Edinburgh(爱丁堡大学)
本研究提出通用自动调优框架BaCO,采用面向领域的贝叶斯优化算法处理多类型参数与约束,在CPU、GPU、FPGA三类编译器上均以极小搜索预算实现了优于现有最优自动调优器的性能与收敛速度。
2023-04-11 cs.LG cs.PF cs.PL
Large Language Models for Compiler Optimization
Meta AI;UC San Diego(加州大学圣地亚哥分校)
研究提出从零训练的 7B 参数 transformer 模型,通过预测指令计数和优化代码等辅助任务优化 LLVM assembly,在减少指令计数上超越基线 3.0%,展现出强大的代码推理能力。
2023-09-11 cs.AI cs.CL cs.LG