Skip to main content
QUICK REVIEW

[论文解读] MAGPIE: Machine Automated General Performance Improvement via Evolution of Software

Aymeric Blot, Justyna Petke|arXiv (Cornell University)|Aug 4, 2022
Software Engineering Research被引用 10
一句话总结

MAGPIE 是一个统一框架,通过将所有优化技术——编译器标志、算法配置和遗传代码变异——表示为编辑序列,实现软件性能的自动协同提升。采用共享表示和局部搜索,它在算法配置方面实现了高达97%的运行时间减少,并通过结合多种技术进一步提升了10%,联合优化在特定场景(如MiniSAT和Weka)中优于单一方法。

ABSTRACT

Performance is one of the most important qualities of software. Several techniques have thus been proposed to improve it, such as program transformations, optimisation of software parameters, or compiler flags. Many automated software improvement approaches use similar search strategies to explore the space of possible improvements, yet available tooling only focuses on one approach at a time. This makes comparisons and exploration of interactions of the various types of improvement impractical. We propose MAGPIE, a unified software improvement framework. It provides a common edit sequence based representation that isolates the search process from the specific improvement technique, enabling a much simplified synergistic workflow. We provide a case study using a basic local search to compare compiler optimisation, algorithm configuration, and genetic improvement. We chose running time as our efficiency measure and evaluated our approach on four real-world software, written in C, C++, and Java. Our results show that, used independently, all techniques find significant running time improvements: up to 25% for compiler optimisation, 97% for algorithm configuration, and 61% for evolving source code using genetic improvement. We also show that up to 10% further increase in performance can be obtained with partial combinations of the variants found by the different techniques. Furthermore, the common representation also enables simultaneous exploration of all techniques, providing a competitive alternative to using each technique individually.

研究动机与目标

  • 为解决编译器优化、算法配置和遗传改进等多样化软件性能提升技术之间缺乏比较与组合的问题。
  • 通过将搜索策略与具体改进技术解耦,实现对不同优化技术的公平、系统性比较。
  • 探索不同粒度层次上的改进之间的协同作用,例如编译器标志、配置参数和代码变异。
  • 评估同时探索多种优化技术是否能获得优于独立或组合使用各自优化变体的性能。
  • 为研究人员和实践者提供一个实用且可扩展的框架,用于原型设计和比较新的优化策略。

提出的方法

  • 将所有软件改进表示为原子编辑序列,抽象出底层技术细节(如编译器标志更改、配置调整、代码变异)。
  • 在所有三种技术中使用相同的局部搜索策略,以确保性能增益的公平比较。
  • 实现三种核心技术:编译器优化(通过GCC/JVM标志)、算法配置(调优用户暴露的参数)、遗传改进(修改源代码)。
  • 对所有技术应用相同的搜索预算,并通过重组最佳变体来评估协同效应。
  • 同时在三个搜索空间(编译器、配置、代码)中进行训练,以探索联合改进,使用相同的编辑序列表示。
  • 基于运行时间进行适应度评估,并在一种情况下结合解决方案质量,以指导搜索并评估多目标结果。

实验结果

研究问题

  • RQ1RQ1:统一表示是否能够实现对编译器优化、算法配置和遗传改进在性能提升方面的公平比较?
  • RQ2RQ2:在真实世界的C、C++和Java应用程序中,各独立技术在减少运行时间方面的有效性如何?
  • RQ3RQ3:从每种技术中选取最佳变体进行部分重组,是否能带来超越单一改进的额外性能增益?
  • RQ4RQ4:在性能方面,对所有三种技术进行联合优化是否优于单独或组合使用的方法?
  • RQ5RQ5:在同时探索编译器、配置和代码级更改时,搜索空间复杂性会产生何种影响?

主要发现

  • 编译器优化在四个真实世界应用程序中实现了最高25%的运行时间减少。
  • 算法配置带来了最高性能提升,运行时间最高减少97%,尤其在Weka和MiniSAT中表现显著。
  • 源代码的遗传改进实现了最高61%的性能提升,显示出在低级别代码优化方面的巨大潜力。
  • 对每种技术的最佳变体进行部分重组,在某些场景下带来了额外10%的性能提升。
  • 在所有三种技术上同时进行训练,使MiniSAT的变体速度提升了40%,超越了单一技术和组合变体,凸显了协同增益。
  • 在Weka中,联合训练使误分类率降低了57%,运行速度提升了36%,展示了多目标优化的优势。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。