Skip to main content
QUICK REVIEW

[논문 리뷰] MAGPIE: Machine Automated General Performance Improvement via Evolution of Software

Aymeric Blot, Justyna Petke|arXiv (Cornell University)|2022. 08. 04.
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가 만들고, 인간 에디터가 검토했습니다.