OpenMP Meta-Lowering: 성능 이식성 높은 병렬 코드 생성을 위한 선언적 접근 방식
요약
본 논문은 병렬 하드웨어 다양성 증가에 따른 성능 이식성 문제를 해결하기 위해 OpenMP meta-lowering이라는 모듈식 접근 방식을 제안합니다. MLIR 기반의 DSL을 사용하여 OpenMP 구문을 로어링하는 과정을 프로그래밍 가능한 구성 요소로 분리했습니다. 이를 통해 다양한 아키텍처에서 높은 성능과 유연성을 확보할 수 있음을 입증했습니다.
핵심 포인트
- OpenMP meta-lowering은 병렬 코드 생성을 위한 모듈식 접근 방식입니다.
- MLIR 기반 DSL을 사용하여 OpenMP 로어링 과정을 프로그래밍 가능하게 합니다.
- 다양한 아키텍처에서 높은 성능 이식성과 효율적인 코드 관리가 가능합니다.
병렬 하드웨어의 다양성이 증가함에 따라 기존 컴파일 흐름에 도전 과제가 발생하고 있습니다. OpenMP는 공유 메모리 병렬 처리를 위한 이식 가능한 추상화를 제공하지만, 기존 컴파일러들은 프론트엔드 의미론(semantics)을 고정된 로어링(lowering) 전략과 밀접하게 결합하고 있습니다. 이러한 설계는 다양한 런타임 및 아키텍처 전반에 걸친 성능 이식성을 제한합니다. 본 논문에서는 Multi-Level Intermediate Representation (MLIR) 프레임워크를 기반으로 하는 병렬 코드 생성을 위한 모듈식 접근 방식을 제시합니다. 저희의 접근 방식은 OpenMP 프론트엔드와 대상(target)을 위해 OpenMP 구문을 어떻게 로어링할지 명시하는 도메인 특화 언어(DSL)를 결합합니다. 저희는 이 접근 방식을 OpenMP meta-lowering이라고 부르며, 로어링을 컴파일러 특정 논리라기보다는 프로그래밍 가능한 구성 요소로 취급합니다. 이러한 설계는 다양한 대상을 가로지르는 코드 개요화(code outlining), 데이터 공유, 런타임 인터페이스에 대한 명시적 제어를 제공합니다. 저희는 범용 및 임베디드 멀티코어 대상에서 PolyBench/C-OMP를 사용하여 접근 방식을 평가했습니다. 그 결과, 제안된 방법이 최첨단 컴파일러 툴체인의 성능과 일치하며 코드 크기 오버헤드는 무시할 수 있는 수준(< 0.7%)임을 보여줍니다. OpenMP 구문을 후기 로어링 단계까지 보존함으로써 범용 및 OpenMP 특정 MLIR 최적화를 모두 가능하게 합니다. 로어링을 컴파일러 내부 구조와 분리함으로써, 저희의 접근 방식은 동일한 OpenMP 서브셋을 5,182줄의 코드로 표현하며, 이는 Clang의 해당 로어링 코드보다 약 32% 적고 GCC의 경우보다 약 76% 적습니다. 또한 pmsis 런타임은 단 몇 줄의 명세만으로 비용이 발생하여 컴파일러를 수정하지 않고도 새로운 런타임을 신속하게 지원할 수 있게 합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기