Skip to main content
QUICK REVIEW

[논문 리뷰] Generating Custom Code for Efficient Query Execution on Heterogeneous Processors

Sebastian Breß, Bastian Köcher|arXiv (Cornell University)|2017. 09. 03.
Parallel Computing and Optimization Techniques참고 문헌 45인용 수 6
한 줄 요약

이 논문은 CPU, GPU, Intel Xeon Phi(MIC)와 같은 이종 프로세서를 위한 맞춤형 코드 변종을 자동으로 생성하는 하드웨어 적응형 쿼리 컴파일러인 Hawk를 제안한다. 이는 병렬화 전략, 데이터 구조 특수화, 코드 변환을 탐색함으로써 이루어지며, 런타임 성능 측정 기반의 학습 기반 전략을 사용해 각 프로세서에 가장 빠른 변종을 선택함으로써 일반 코드 대비 최대 두 배수의 성능 향상을 달성한다.

ABSTRACT

Processor manufacturers build increasingly specialized processors to mitigate the effects of the power wall to deliver improved performance. Currently, database engines are manually optimized for each processor: A costly and error prone process. In this paper, we propose concepts to enable the database engine to perform per-processor optimization automatically. Our core idea is to create variants of generated code and to learn a fast variant for each processor. We create variants by modifying parallelization strategies, specializing data structures, and applying different code transformations. Our experimental results show that the performance of variants may diverge up to two orders of magnitude. Therefore, we need to generate custom code for each processor to achieve peak performance. We show that our approach finds a fast custom variant for multi-core CPUs, GPUs, and MICs.

연구 동기 및 목표

  • 현대 데이터베이스에서 수작업 튜닝이 비용이 많이 들고 실수의 여지가 있는 프로세서 이질성 문제를 해결하기 위해.
  • 각 프로세서별 수작업 코드 최적화가 필요 없도록 자동으로 하드웨어 인식 코드 생성을 가능하게 하기 위해.
  • 각 프로세서에 대해 가장 높은 성능을 내는 구성 요소를 식별하기 위해 여러 코드 변종을 탐색하고 평가하기 위해.
  • 학습된 최적 구성 요소를 히وري스틱 쿼리 최적화기와 통합해 실세계 환경에서의 구현을 가능하게 하기 위해.
  • 코드 변종 간 성능 격차가 최대 두 배수에 이르며, 이는 최고 성능을 내기 위해 맞춤형 코드가 필수적임을 입증하기 위해.

제안 방법

  • 체계적인 코드 생성을 위한 운영 및 구현 특성 정보를 포괄하는 새로운 물리적 쿼리 계획 추상화인 파이프라인 프로그램을 도입한다.
  • 병렬화 전략, 데이터 구조 레이아웃, 컴파일러 변환을 수정함으로써 체계적으로 코드 변종을 생성한다.
  • 쿼리 연산자를 OpenCL 커널으로 컴파일하여 OpenCL 호환 프로세서에서 낮은 컴파일 오버헤드로 실행할 수 있도록 한다.
  • 런타임 성능 측정 기반의 학습 전략을 사용해 각 대상 프로세서에 가장 빠른 코드 변종을 프로파일링하고 선택한다.
  • 학습된 최적 구성 요소를 히وري스틱 쿼리 최적화기와 통합해 런타임에 실행 경로를 동적으로 선택할 수 있도록 한다.
  • 코드 생성을 위해 생산/소비 모델을 사용하여 레지스터에서 튜플을 처리함으로써 루프 융합과 데이터 국소성을 향상시킨다.

실험 결과

연구 질문

  • RQ1수작업 튜닝 없이 다양한 이종 프로세서에서 고성능 코드를 자동으로 생성할 수 있는 방법은 무엇인가?
  • RQ2CPU, GPU, MIC에서 성능에 가장 큰 영향을 미치는 코드 변형 차원(예: 병렬화 전략, 데이터 레이아웃, 변환)은 무엇인가?
  • RQ3코드 변종 간 성능 격차는 다양한 프로세서 유형에 따라 얼마나 다를 수 있으며, 이를 체계적으로 활용할 수 있는가?
  • RQ4학습 기반 접근법이 최소한의 프로파일링 오버헤드로 주어진 프로세서에 가장 적합한 코드 변종을 효과적으로 식별할 수 있는가?
  • RQ5하드웨어 적응형 코드 생성을 쿼리 최적화기에 통합해 런타임에 가장 빠른 실행 경로를 동적으로 선택할 수 있는가?

주요 결과

  • 동일한 쿼리와 프로세서에 대해 코드 변종 간 성능 격차가 최대 두 배수에 이르며, 이는 각 프로세서별 코드 특수화의 필수성을 입증한다.
  • 제안된 방법은 다중 코어 CPU, GPU, Intel Xeon Phi(MIC) 가속기에서 자동 변종 탐색을 통해 고성능 코드를 성공적으로 생성한다.
  • 학습 기반 최적 코드 변종 선택 전략은 사전 하드웨어 지식이나 수작업 튜닝 없이도 뚜렷한 성능 향상을 달성한다.
  • 파이프라인 프로그램 추상화는 성능에 민감한 최적화를 유지하면서도 영향력 있고 유지보수 용이하며 모듈화된 코드 생성을 가능하게 한다.
  • 학습된 구성 요소를 히وري스틱 쿼리 최적화기에 통합함으로써 런타임에 가장 빠른 실행 변종을 선택할 수 있어 전체 시스템의 효율성이 향상된다.
  • 동일한 코드를 모든 프로세서에 사용하는 하드웨어 무관 시스템인 Ocelot보다도 프로세서별로 특화된 고성능 커널을 생성함으로써 성능 면에서 뛰어난 성능을 발휘한다.

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

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

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

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