NPUEval: Optimizing NPU Kernels with LLMs and Open Source Compilers
本文提出NPUEval基准,包含102个机器学习算子,用于评估LLM在AMD NPU上生成内核的功能正确性与向量化效率,并揭示即使前沿模型平均得分也仅约10%的挑战。
2025-07-18 cs.PL
Optimizing Function Layout for Mobile Applications
函数布局,也称为函数重新排序或函数放置,是最有效的配置文件引导编译器优化之一。通过在二进制文件中重新排序函数,编译器能够极大地提高大规模应用程序的性能或减少移动应用程序的压缩大小。虽然这项技术已经在大规模二进制文件的背景下进行了研究,但最近没有研究调查了功能布局对移动应用程序的影响。在本文中,我们开发了第一个原则性的解决方案,优化功能布局的移动空间。为此,我们确定了两个重要的优化目标,压缩代码大小和冷启动时间待用时间的移动应用程序。然后,我们提出了一个正式的模型布局问题,其目标密切配合的目标。我们的新算法来优化布局的灵感来自于经典的平衡图划分问题。我们精心设计并在开源编译器LLVM中实现了该算法。在大型商业移动应用程序上对新方法进行的广泛评估表明,在最先进的方法之上,压缩大小减少了2%,启动待用时间改善了3%。
2022-11-17 cs.PL
LoopTune: Optimizing Tensor Computations with Reinforcement Learning
Rice University(莱斯大学);Meta AI;Dabun AI
针对传统编译器性能不足、自动调优耗时长等问题,提出深度强化学习编译器LoopTune,结合图表示与LoopNest代码生成器,可快速针对CPU优化张量计算,性能比肩手动调优库。
2023-11-08 cs.LG cs.PL
Meta-compilation of Baseline JIT Compilers with Druid
本文提出Druid,一种从解释器自动生成基线JIT编译器前端的元编译方法,在Pharo上验证,生成的前端比解释器快2倍,达到手写JIT编译器0.7倍性能,仅需修改60个调用点,提升了虚拟机可维护性。
2025-02-27 cs.PL
Whose baseline compiler is it anyway?
本文研究Wasm基线编译器的设计与权衡,揭开单遍编译器的内部机制,提出一款集成值标签、支持灵活插桩的新型单遍编译器,实验证明其值标签优化开销近零,并评估了6款基线编译器的性能定位。
2023-11-05 cs.PL
TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
Paul G. Allen School of Computer Science & Engineering, University of Washington(华盛顿大学保罗·G·艾伦计算机科学与工程学院);AWS(亚马逊云科技);Shanghai Jiao Tong University(上海交通大学);UC Davis(加州大学戴维斯分校);Cornell(康奈尔大学)
越来越需要将机器学习引入各种各样的硬件设备。目前的框架依赖于特定于供应商的运算符库,并针对范围较窄的服务器级GPU进行了优化。将工作负载部署到新平台--例如移动电话、嵌入式设备和加速器(例如,FPGA、ASIC)--需要大量的手动工作。我们提出了TVM,这是一个编译器,它公开了图形级和操作符级优化,为跨不同硬件后端的深度学习工作负载提供性能可移植性。TVM解决了特定于深度学习的优化挑战,例如高级操作符融合,映射到任意硬件原语和内存延迟隐藏。它还采用了一种新的,基于学习的成本建模方法,用于快速探索代码优化,从而自动优化低级程序的硬件特性。实验结果表明,TVM在硬件后端提供的性能与低功耗CPU,移动GPU和服务器级GPU的最先进的手工调优库竞争。我们还展示了TVM针对新加速器后端的能力,例如基于FPGA的通用深度学习加速器。该系统是开源的,并在几家大公司的生产中使用。
2018-10-05 cs.AI cs.LG cs.PL
Quanto: Optimizing Quantum Circuits with Automatic Generation of Circuit Identities
现有的量子编译器专注于将逻辑量子线路映射到量子设备及其本机量子门。在编译过程中,仅使用简单的电路恒等式来优化量子线路。这种方法忽略了更复杂的电路恒等式,这可以用于进一步优化量子线路。我们提出了Quanto,第一个自动生成电路身份的量子优化器。Quanto将门集合作为输入,并为门集合生成可证明正确的电路标识。Quanto的电路身份自动生成包括单量子位和双量子位门,这导致了一个新的电路身份数据库,其中一些是我们所知的新颖的。除了生成新的电路恒等式,Quanto的优化器还将这样的电路恒等式应用于量子线路,并找到其他量子编译器(包括IBM Qiskit和剑桥量子计算Tket)尚未发现的优化量子线路。Quanto的电路身份数据库可以用于改进现有的量子编译器,Quanto可以用于为新的门集生成身份数据库。
2021-11-22 cs.PL quant-ph
Optimizing Layout of Recursive Datatypes with Marmoset
Marmoset是一个编译器,通过分析递归代数数据类型的使用并求解约束系统来优化其内存布局,生成紧凑、指针追逐少的表示,实验证明其优于Gibbon和MLton。
2024-11-06 cs.PF cs.PL
Formal Performance and Compile Time Guarantees for Compiler Optimization Heuristics
Cornell University(康奈尔大学)
该研究针对编译器启发式算法的性能与编译时间缺陷,提出在Rocq中验证编译器 passes 的性能与编译时间属性,通过内联展开的概念验证实现语义保留及相关界的验证,为编译器优化的形式化保证提供方案。
2026-08-21 cs.PF cs.PL
Optimizing large applications
两个最主要的开源编译器,GCC和LLVM,都足够成熟,可以在链接时优化大型应用程序。在大型应用程序的情况下,我们必须考虑,除了标准的速度效率和内存消耗,不同的方面。我们专注于代码的大小,冷启动待用时间等。应用程序的开发人员通常会提出临时解决方案,例如Elfhack实用程序,通过预加载实用程序和dlopen启动应用程序;预链接和各种不同的工具,重新排序功能以适应执行顺序。本文的目标是分析现有的优化技术,评估其效率,并设计新的解决方案的基础上的链接时间优化平台。
2014-03-27 cs.PL
Exploring Aspects of Polyglot High-Performance Virtual Machine GraalVM
当代软件往往变得非常复杂,我们需要使用各种技术和不同的程序设计语言来进行开发。由于程序设计语言之间的互操作性可能会导致高开销,从而导致性能损失,因此研究当前使用高级面向对象语言编写的编译器的多语言虚拟机如何处理它非常重要。OpenJDK的Project Metropolis提出了GraalVM,这是一个开源的高性能多语言虚拟机,主要用Java编写。本文介绍了GraalVM的体系结构及其功能,并进一步研究了它如何解决常见的互操作性和性能问题。GraalVM在结合各种程序设计语言时使软件生态系统富有成效,例如Java,JavaScript,C/C++,Python,Ruby,R等。GraalVM的重要部分是用Java编写的Graal编译器,与传统的C/C++语言编译器相比,它允许开发人员更快,更简单,更高效地维护和优化代码。Graal可以用作即时(JIT)或静态提前(AOT)编译器。Graal是一个积极优化的编译器,实现了常见的编译器优化,重点是出色的内联和转义分析算法。本文将Graal与一些最专业的竞争对手进行了比较,并提出了我们在学术环境中测试的结果。
2021-12-15 cs.PL
Control Flow Duplication for Columnar Arrays in a Dynamic Compiler
列式数据库是一种加快联机分析处理(OLAP)查询的成熟方法。如今,数据处理(例如,存储、可视化和分析)通常在程序设计语言级执行,因此还希望采用用于公共语言运行时的列式数据结构。虽然有框架、库和API可以支持程序设计语言中的列式数据存储,但将它们集成到应用程序中通常需要开发人员的干预。在之前的工作中,研究人员在GraalVM JavaScript运行时中实现了一种将数组自动转换为列数组的方法。然而,这种方法在较小的工作负载以及更复杂的嵌套数据结构上存在性能问题。我们发现,优化对列数组的访问的关键是识别查询并对其应用特定的优化。在本文中,我们描述了新的编译器优化的GraalVM优化列数组上的查询。在JIT编译时,我们识别访问潜在列数组的循环,并复制它们,以便专门优化对列数组的访问。此外,我们描述了一种新的方法,通过执行 ** 多级存储转换 **,从由复杂对象组成的数组中创建列数组。我们通过JavaScript `Date`对象的实现来演示我们的方法。[完整摘要见https://doi.org/10.22152/programming-journal.org/2023/7/9]
2023-02-20 cs.PL
World Age in Julia: Optimizing Method Dispatch in the Presence of Eval (Extended Version)
动态规划语言面临着语义和性能方面的挑战,例如eval,它可以将新代码注入到正在运行的程序中。Julia程序设计语言引入了世界时代的新概念,将优化的代码与eval最具破坏性的副作用之一隔离开来:对现有函数定义的更改。本文提供了第一个正式的语义世界时代的核心演算命名朱丽叶,并显示了世界时代如何使编译器优化,如内联,在eval的存在。虽然Julia也为程序员提供了绕过world age的方法,但我们发现这种机制并没有被广泛使用:对4,000多个注册Julia软件包的静态分析显示,只有4-9%的软件包绕过了world age。这表明Julia的语义符合程序员的期望。
2020-10-16 cs.PL
POSET-RL: Phase ordering for Optimizing Size and Execution Time using Reinforcement Learning
IIT Hyderabad(印度理工学院海得拉巴分校)
几个应用程序的不断增加的内存需求导致了嵌入式设备可能无法满足的需求增加。在这种情况下,限制内存的使用至关重要。重要的是,这种代码大小的改进不应该对运行时产生负面影响。在优化代码大小的同时改善执行时间是一项重要的任务。现代编译器中标准优化序列的顺序是固定的,并且由编译器领域专家基于他们的专业知识来创建。然而,这种排序是次优的,并且不能很好地推广到所有情况。我们提出了一个基于强化学习的解决方案的阶段排序问题,其中排序提高了执行时间和代码大小。我们提出了两种不同的方法来建模的序列:一个手动排序,和其他基于一个图称为奥兹依赖图(ODG)。我们的方法使用最少的数据作为训练集,并与LLVM集成。我们在SPEC-CPU 2006、SPEC-CPU 2017和MiBench的基准测试中展示了x86和AArch 64架构的结果。我们观察到,在SPEC 2017基准测试中,基于ODG的拟议模型在大小和执行时间方面均优于当前的Oz序列,平均分别为6.19%和11.99%。
2022-07-27 cs.LG cs.PL
Towards a native toplevel for the OCaml language
本文介绍了我们在OCaml语言的交互式顶层上的工作现状,该顶层是基于优化本机代码编译器和运行时的。我们的原生toplevel比默认的OCaml toplevel快100倍,默认的OCaml toplevel基于字节码编译器和解释器。它使用即时技术在运行时将顶级短语编译为本机代码,目前可用于运行在x86或x86-64处理器上的各种类Unix系统。
2011-10-27 cs.PF cs.PL
K-CONFIG: Using Failing Test Cases to Generate Test Cases in GCC Compilers
University of Houston(休斯顿大学)
编译器的正确性对其他软件系统的安全性和可靠性至关重要,因为编译器中的错误可能会产生不反映程序员意图的程序。由于优化的复杂性,编译器是复杂的软件系统。GCC是一个优化的C编译器,已被用于构建操作系统和许多其他系统软件。在本文中,我们描述了K-CONFIG,一种使用GCC存储库中报告的错误来生成新的测试输入的方法。我们的主要观点是,bug报告中出现的功能很可能会在未来的bug中重新出现,因为bug修复可能不完整,或者这些功能可能天生就难以实现,因此更容易出错。我们的方法首先聚类失败的测试输入提取的错误报告到集群的相似的测试输入。然后,它使用这些集群为Csmith创建配置,Csmith是C编译器最流行的测试生成器。在我们对两个版本的GCC的实验中,我们的方法可以触发多达36个错误编译失败,179个崩溃,而默认配置的Csmith没有触发任何失败。这项工作表明了在生成新的测试输入时分析和使用报告的错误的好处。
2019-08-27 cs.LG cs.PL cs.SE
Equality Saturation for Optimizing High-Level Julia IR
开发了基于 e-graphs 和等式饱和的系统,允许领域专家通过重写规则优化 Julia 代码,支持控制流、副作用、多重派发约束及类型传播,并提出 ILP 公式和 CFG 骨架松弛技术。
2025-07-13 cs.PL cs.SE
Two-level Just-in-Time Compilation with One Interpreter and One Engine
运行Java或JavaScript的现代强大虚拟机支持多层JIT编译和优化功能,以实现其高性能。然而,实现和维护多个相互交互的编译器/优化器需要勤奋的VM开发人员。在本文中,我们提出了一种在RPython中实现两级JIT编译的技术,而无需从头开始实现多个解释器或编译器。作为初步实现,我们创建了自适应RPython,它可以执行基于线程代码的基线JIT编译和跟踪JIT编译。我们还用它实现了一个小型的程序设计语言。此外,我们初步评估了该小型语言的性能,我们的基线JIT编译运行速度比仅解释器执行快1.77倍。此外,我们观察到,当我们为不同的目标方法应用最佳JIT编译时,性能与优化JIT编译策略的性能基本相同,节省了大约40%的编译代码大小。
2022-01-23 cs.PL
Categorization of Program Regions for Agile Compilation using Machine Learning and Hardware Support
Intel Labs(英特尔实验室)
编译器处理以高级语言编写的代码并产生机器可执行代码。编译器编写者经常面临保持编译时间合理的挑战。这是因为积极的优化传递可能会带来高性能,在运行时间和内存占用方面通常是昂贵的。因此,编译器设计者达成妥协,其中他们或者简化优化算法,这可能降低所产生的代码的性能,或者他们将优化限制到整个输入程序的子集,在这种情况下,输入应用程序的大部分将不被优化。在本文中,我们解决的问题是,保持合理的编译时间,并在同一时间优化输入程序,以最大限度地可能。因此,所产生的代码的性能将与在整个输入程序上应用所有积极优化遍数时的性能相匹配。
2019-05-29 cs.LG cs.PF cs.PL
$Q|SI\rangle$: A Quantum Programming Environment
介绍了一个量子程序设计环境$Q|SI\rangle$。它是一个嵌入.Net语言的平台,支持使用$\mathbf{while}$语言的量子扩展进行量子编程。该平台的框架包括一个量子$\mathbf{while}$语言的编译器和一套用于模拟量子计算、优化量子线路以及分析和验证量子程序的工具。在整个文件中,使用$Q|SI\rangle$模拟量子行为的经典平台与组件的组合进行了演示。可扩展的框架允许用户在平台上编程定制功能。编译器是$Q|SI\rangle$的核心,它在量子硬件和量子软件之间架起了一座桥梁。内置的分解算法使通用的量子计算在现有的量子硬件上。
2017-10-26 cs.PL quant-ph
MLComp: A Methodology for Machine Learning-based Performance Estimation and Adaptive Selection of Pareto-Optimal Compiler Optimization Sequences
Institute of Computer Engineering, Technische Universität Wien (TUWien)(维也纳技术大学计算机工程学院);TU Wien(维也纳技术大学);ABIX GmbH(ABIX有限公司);Division of Engineering, New York University Abu Dhabi(纽约大学阿布扎比分校工程学院)
随着网络物理系统和物联网的发展,嵌入式系统在各种消费和工业应用中激增。这些系统受到严格的约束,因此嵌入式软件必须同时针对多个目标进行优化,即降低能耗、执行时间和代码大小。制造商提供优化阶段来改进这些指标。然而,它们的正确选择和排序取决于多种因素,通常需要专业知识。最先进的优化器可以根据具体情况为不同的平台和应用程序提供便利,但它们受到每次优化一个指标的限制,并且需要通过动态分析对不同目标进行耗时的适应。为了解决这些问题,我们提出了新的MLComp方法,其中优化阶段由基于强化学习的策略排序。策略的训练由基于机器学习的分析模型支持,用于快速性能估计,从而大幅减少动态分析所花费的时间。在我们的框架中,自动测试不同的机器学习模型,以选择最适合的模型。利用训练的性能估计模型来有效地设计基于强化学习的多目标策略,以创建准最优相位序列。与最先进的估计模型相比,我们的性能估计器模型在多个平台和应用领域中实现了更低的相对误差(<2%),训练时间最多快50倍。我们的阶段选择策略将给定代码的执行时间和能耗分别提高了12%和6%。性能估计和阶段选择策略可以针对任何目标平台和应用领域进行有效训练。
2020-12-11 cs.LG cs.PL
New Directions in Cloud Programming
本文提出一项云计算编程研究议程,通过将分布式程序分为PACT四方面,并采用多阶段编译器,逐步引导开发者转向声明式编程,以降低云计算开发难度。
2021-01-04 cs.DB cs.DC cs.OS
SymRTLO: Enhancing RTL Code Optimization with LLMs and Neuron-Inspired Symbolic Reasoning
University of Maryland, College Park(马里兰大学科帕克分校);City University of Hong Kong(香港城市大学);University of Southern California(南加州大学)
SymRTLO提出一种融合LLM代码重写、RAG优化规则、AST模板与FSM符号推理的RTL优化框架,并配合快速验证流水线,在PPA指标上相比现有方法最高提升62.5%。
2025-09-22 cs.AI cs.AR cs.LG
Optimizing High-Level Synthesis Designs with Retrieval-Augmented Large Language Models
针对高层次综合(HLS)代码优化依赖专业知识和繁琐迭代的问题,提出基于检索增强LLM的RALAD框架,利用少样本学习和top-k搜索动态获取领域知识,在编译任务中达到80%成功率,延迟改进较通用LLM提升3.7-19倍。
2024-10-09 cs.AR cs.PL