[논문 리뷰] Tiramisu: A Code Optimization Framework for High Performance Systems
Tiramisu는 다면체 기반의 코드 최적화 프레임워크로, 알고리즘, 스케줄링, 데이터 레이아웃, 통신을 네 수준의 중간 표현으로 분리하여, 멀티코어 CPU, GPU, FPGA, 분산 시스템을 포함한 다양한 고성능 아키텍처에 대해 효율적인 코드 생성을 가능하게 한다. 이는 Halide를 확장하여 새로운 기능을 추가하고, Intel MKL과 같은 수동 최적화 라이브러리의 성능을 따라하거나 초월하며, 멀티코어 시스템에서 최대 4배의 성능 향상을 달성한다.
This paper introduces Tiramisu, an optimization framework designed to generate efficient code for high-performance systems such as multicores, GPUs, FPGAs, distributed machines, or any combination of these. Tiramisu relies on a flexible representation based on the polyhedral model and introduces a novel four-level IR that allows full separation between algorithms, schedules, data-layouts and communication. This separation simplifies targeting multiple hardware architectures from the same algorithm. We evaluate Tiramisu by writing a set of linear algebra and DNN kernels and by integrating it as a pass in the Halide compiler. We show that Tiramisu extends Halide with many new capabilities, and that Tiramisu can generate efficient code for multicores, GPUs, FPGAs and distributed heterogeneous systems. The performance of code generated by the Tiramisu backends matches or exceeds hand-optimized reference implementations. For example, the multicore backend matches the highly optimized Intel MKL library on many kernels and shows speedups reaching 4x over the original Halide.
연구 동기 및 목표
- 멀티코어 CPU, GPU, FPGA, 분산 클러스터를 포함한 이종 아키텍처에서 이식 가능하고 고성능 코드를 작성하는 데 도전하는 것.
- 기존 코드 생성 프레임워크에서 알고리즘, 스케줄링, 데이터 레이아웃, 통신 간의 강한 결합을 극복하는 것.
- 다양한 아키텍처에서 수동 최적화 구현과 동일하거나 이를 초월하는 자동 코드 생성을 가능하게 하는 것.
- Halide 컴파일러에 새로운 최적화 기능을 통합하여 백엔드 단계로 통합함으로써 Halide 컴파일러의 기능을 확장하는 것.
제안 방법
- 정확한 의존성 분석을 가능하게 하는 유연한 다면체 모델 표현을 사용하여 데이터 병렬 계산을 표현하는 것.
- 알고리즘, 스케줄링, 데이터 레이아웃, 통신을 명시적으로 분리하는 새로운 네 수준의 중간 표현(IR)을 도입하는 것.
- 네 수준의 IR을 통해 알고리즘 논리와 저수준 구현 세부 정보를 분리하여, 독립적인 최적화와 재사용을 가능하게 하는 것.
- 스케줄링과 데이터 레이아웃을 알고리즘과 독립적으로 표현함으로써 다양한 목표 아키텍처에 대한 코드 생성을 지원하는 것.
- Halide 컴파일러 내부에 Tiramisu를 패스로 통합하여, Halide의 기존 인프라를 활용하면서도 능력을 확장하는 것.
- 자동 스케줄링 및 레이아웃 변환을 통해 멀티코어, GPU, FPGA, 분산 이종 시스템에 최적화된 코드를 생성하는 것.
실험 결과
연구 질문
- RQ1통합 프레임워크가 멀티코어 CPU, GPU, FPGA, 분산 시스템을 포함한 다양한 아키텍처에서 고성능 코드를 생성할 수 있는가?
- RQ2알고리즘, 스케줄링, 데이터 레이아웃, 통신을 분리하는 네 수준의 IR이 코드의 이식성과 성능 향상에 얼마나 효과적인가?
- RQ3멀티코어 시스템에서 Tiramisu가 Intel MKL과 같은 수동 최적화 라이브러리의 성능을 따라하거나 초월할 수 있는가?
- RQ4Tiramisu는 Halide 컴파일러의 코드 생성 및 최적화 능력을 어떻게 확장하는가?
- RQ5Tiramisu의 자동 최적화 파이프라인을 사용할 경우 원본 Halide 구현 대비 얼마나 많은 성능 향상을 달성할 수 있는가?
주요 결과
- Tiramisu는 동일한 알고리즘 명세에서 멀티코어, GPU, FPGA, 분산 이종 시스템에 대한 코드를 생성한다.
- Tiramisu의 멀티코어 백엔드는 많은 선형 대수 및 DNN 커널에서 고도로 최적화된 Intel MKL 라이브러리의 성능을 따라잡는다.
- Tiramisu는 원본 Halide 구현 대비 멀티코어 시스템에서 최대 4배의 성능 향상을 달성한다.
- Halide 컴파일러 내부에 Tiramisu를 패스로 통합함으로써, 새로운 하드웨어 타겟과 최적화 전략을 지원하는 능력이 확장된다.
- 네 수준의 IR은 책임 분리를 완전히 실현하여, 다양한 아키텍처에서의 코드 생성 및 유지보수를 단순화한다.
- Tiramisu 백엔드에서 생성된 코드는 평가된 모든 플랫폼에서 수동 최적화 기반 구현과 동일하거나 이를 초월하는 성능을 보인다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.