Skip to main content
QUICK REVIEW

[논문 리뷰] Automatically Tuning the GCC Compiler to Optimize the Performance of Applications Running on Embedded Systems

Craig Blackmore, Oliver Ray|arXiv (Cornell University)|2017. 02. 23.
Parallel Computing and Optimization Techniques참고 문헌 14인용 수 4
한 줄 요약

이 논문은 임베디드 시스템을 위한 GCC 컴파일러 플래그를 자동으로 튜닝하는 방법을 제시한다. 이 방법은 -Ocm3, -Oca8, -Oavr와 같은 플랫폼별 최적화 수준을 생성하여 다양한 벤치마크에서 -O3를 뛰어넘는 성능을 달성한다. 개별 프로그램이 아닌 임베디드 프로그램의 집합을 대상으로 반복적 컴파일을 수행함으로써, 최소한의 오버헤드로 거의 최적에 가까운 성능 향상을 이룬다. 이는 ARM Cortex-M3, Cortex-A8, AVR 프로세서에서 빠른 성능 향상을 크게 개선한다.

ABSTRACT

This paper introduces a novel method for automatically tuning the selection of compiler flags to optimize the performance of software intended to run on embedded hardware platforms. We begin by developing our approach on code compiled by the GNU C Compiler (GCC) for the ARM Cortex-M3 (CM3) processor; and we show how our method outperforms the industry standard -O3 optimization level across a diverse embedded benchmark suite. First we quantify the potential gains by using existing iterative compilation approaches that time-intensively search for optimal configurations for each benchmark. Then we adapt iterative compilation to output a single configuration that optimizes performance across the entire benchmark suite. Although this is a time-consuming process, our approach constructs an optimized variation of -O3, which we call -Ocm3, that realizes nearly two thirds of known available gains on the CM3 and significantly outperforms a more complex state-of-the-art predictive method in cross-validation experiments. Finally, we demonstrate our method on additional platforms by constructing two more optimization levels that find even more significant speed-ups on the ARM Cortex-A8 and 8-bit AVR processors.

연구 동기 및 목표

  • 소스 코드나 컴파일러를 수정하지 않고도 임베디드 시스템에서 성능을 최대화할 수 있도록 자동으로 GCC 컴파일러 플래그를 튜닝하는 방법을 개발하는 것.
  • 다양한 벤치마크 세트에서 표준 -O3 수준을 뛰어넘는 단일 플랫폼 전역 최적화 설정을 식별하는 것.
  • 각 프로그램에 대해 반복적 컴파일을 수행하는 수작업 튜닝의 시간과 복잡성을 줄이기 위해, 개별 프로그램 기반의 반복적 컴파일을 단일 재사용 가능한 최적화 수준으로 대체하는 것.
  • ARM Cortex-M3, Cortex-A8 및 8비트 AVR 프로세서를 포함한 여러 임베디드 플랫폼으로 이 방법을 일반화하는 것.
  • 응용 프로그램 개발자가 시간이 많이 소요되는 검색을 수행하지 않아도 사용할 수 있는 실용적이고 구현 가능한 컴파일러 설정을 제공하는 것.

제안 방법

  • 각 타겟 플랫폼에 대해 대표적인 벤치마크 세트(BEEBS)를 기반으로, 방대한 GCC 플래그 조합의 공간을 탐색하기 위해 반복적 컴파일을 사용하는 것.
  • 개별 프로그램을 최적화하는 것이 아니라, 모든 벤치마크에서의 속도 향상을 극대화하는 단일 설정을 식별하기 위해 성능 중심의 탐색을 적용하는 것.
  • 탐색 과정에서 발견된 최고 성능을 보인 플래그 조합을 바탕으로 새로운 최적화 수준(-Ocm3, -Oca8, -Oavr)을 구성하는 것.
  • -O3에서 제거된 특정 플래그(예: -fno-exceptions, -fno-rtti)의 영향을 분석하여 성능 향상의 이유를 설명하는 것.
  • 최신 기계학습 기반 접근법(1NN)과의 비교를 위해 10겹 교차검증을 사용하여 신규 설정을 검증하는 것.
  • 최종 설정을 공개하여 재현 가능성과 개발자들의 실용적 적용을 가능하게 하는 것.

실험 결과

연구 질문

  • RQ1다양한 임베디드 벤치마크 세트에서 -O3를 뛰어넘는 단일 플랫폼 전용 컴파일러 설정을 자동으로 생성할 수 있는가?
  • RQ2반복적 컴파일을 프로그램 개별 최적화가 아닌 벤치마크 세트 최적화에 적응시킬 수 있는 정도는 어느 정도인가?
  • RQ3-O3에 포함된 특정 컴파일러 플래그가 일부 임베디드 아키텍처에서 성능에 악영향을 미치는 이유는 무엇이며, 이를 안전하게 비활성화할 수 있는가?
  • RQ4자동으로 생성된 최적화 수준이 미리 보지 못한 프로그램으로도 잘 일반화되는가? 기계학습 기반 예측 방법과 비교해보면 어떻게 되는가?
  • RQ5이 방법은 다른 지시어 집합과 성능 특성을 가진 다른 임베디드 플랫폼으로도 확장 가능한가?

주요 결과

  • 제안된 -Ocm3 최적화 수준는 고갈된 반복적 컴파일을 통해 도출된 최대 성능 향상의 약 2/3에 가까운 성능 향상을 ARM Cortex-M3에서 달성한다.
  • -Ocm3는 CM3 플랫폼에서 10겹 교차검증 실험에서 -O3와 최신 기계학습 기반 1NN 접근법 모두를 뛰어넘는 성능을 보인다.
  • 이 방법은 ARM Cortex-A8와 8비트 AVR에 대해 각각 -Oca8 및 -Oavr를 성공적으로 생성하였으며, 이들 모두가 해당 플랫폼에서 -O3를 뛰어넘는 성능을 보였다.
  • -O3에서 -fno-exceptions 및 -fno-rtti 등의 플래그를 비활성화하면 CM3에서 성능 향상이 이루어지며, 저자들은 이러한 플래그가 이 환경에서 해로운 영향을 미치는 이유를 상세히 설명한다.
  • 새로운 최적화 수준는 10겹 교차검증에서 일관된 성능 향상을 보이며, 미리 보지 못한 프로그램으로도 잘 일반화됨을 입증하였다.
  • 이 방법은 시간이 많이 소요되는 각 프로그램 기반 반복적 컴파일의 실용적이고 저비용 대안을 제공하며, 기계학습이나 맞춤형 학습 데이터가 필요로 하지 않는다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.