Skip to main content
QUICK REVIEW

[논문 리뷰] Transformations of High-Level Synthesis Codes for High-Performance Computing

Johannes de Fine Licht, Maciej Besta|arXiv (Cornell University)|2018. 05. 21.
Parallel Computing and Optimization Techniques인용 수 9
한 줄 요약

이 논문은 FPGAs와 같은 공간 아키텍처에서 고성능 계산을 위한 고수준 합성(HLS) 코드를 대상으로 종합적인 최적화 변환 기법을 제시한다. 파이ipel라인, 메모리, 확장성 변환 기법을 분류하여 체계적인 코드 최적화를 통해 원시 HLS 구현 대비 최대 29,950배의 성능 향상을 입증하고, 오픈소스 기반 참조 커널도 제공한다.

ABSTRACT

Spatial computing architectures promise a major stride in performance and energy efficiency over the traditional load/store devices currently employed in large scale computing systems. The adoption of high-level synthesis (HLS) from languages such as C++ and OpenCL has greatly increased programmer productivity when designing for such platforms. While this has enabled a wider audience to target spatial computing architectures, the optimization principles known from traditional software design are no longer sufficient to implement high-performance codes, due to fundamentally distinct aspects of hardware design, such as programming for deep pipelines, distributed memory resources, and scalable routing. To alleviate this, we present a collection of optimizing transformations for HLS, targeting scalable and efficient architectures for high-performance computing (HPC) applications. We systematically identify classes of transformations (pipelining, scalability, and memory), the characteristics of their effect on the HLS code and the resulting hardware (e.g., increasing data reuse or resource consumption), and the objectives that each transformation can target (e.g., resolve interface contention, or increase parallelism). We show how these can be used to efficiently exploit pipelining, on-chip distributed fast memory, and on-chip dataflow, allowing for massively parallel architectures. To quantify the effect of various transformations, we cover the optimization process of a sample set of HPC kernels, provided as open source reference codes. We aim to establish a common toolbox to guide both performance engineers and compiler engineers in tapping into the performance potential offered by spatial computing architectures using HLS.

연구 동기 및 목표

  • 원시 HLS 코드와 고성능 공간 아키텍처 사이의 성능 격차를 해소하기 위해 하드웨어 인지 최적화 기법을 규명한다.
  • 파이ipel라인, 메모리 계층 구조, 확장성에 중점을 두어 HPC 워크로드에 적용 가능한 HLS 변환 기법을 체계적으로 분류한다.
  • 성능 및 컴파일러 엔지니어가 HLS로 생성된 하드웨어를 최적화하는 데 도움이 되는 실용적이고 재사용 가능한 변환 도구상자를 제공한다.
  • 스테인, 행렬 곱셈, N체 문제를 포함한 HPC 커널에 대한 종단 간 최적화를 통해 이 변환 기법의 효과를 입증한다.

제안 방법

  • 하드웨어 자원 사용 및 성능에 미치는 영향을 기반으로 핵심 HLS 변환 기법을 파이ipel라인, 메모리 최적화, 확장성의 세 가지 범주로 분류한다.
  • 기존 CPU/GPU 컴파일러 최적화 기법을 HLS에 적용할 수 있는지 분석하여 직접 적용 가능한 것, 적응이 필요한 것, 하드웨어 차이로 인해 무의미한 것을 구분한다.
  • 루프 파이ipel라인, 배열 분할, 데이터 재사용 향상, 인터페이스 경쟁 해결 등의 변환 기법을 적용하여 커널 성능을 최적화한다.
  • Pragma 기반 HLS 툴체인(Intel OpenCL 및 Xilinx Vivado HLS)을 사용하여 실제 HPC 커널에 변환 기법을 구현하고 평가한다.
  • GitHub에 최적화된 참조 코드를 공개하여 성능 엔지니어링의 기준 및 교육 자료로 활용한다.
  • 여러 HPC 커널에 걸쳐 원시 HLS 구현 대비 성능 향상을 속도 향상 지표로 정량화한다.

실험 결과

연구 질문

  • RQ1공간 아키텍처를 위한 고수준 합성에 대응할 때, 기존 컴파일러 최적화 기법 중 어떤 것이 직접 적용 가능하거나 적응이 필요한가?
  • RQ2파이ipel라인, 메모리 계층 구조 관리, 데이터플로우 최적화를 HLS 코드에 어떻게 체계적으로 적용하여 FPGA에서 고성능을 달성할 수 있는가?
  • RQ3HPC 커널에 하드웨어 인지 변환 기법의 세트를 적용했을 때 누적 성능 영향은 어떠한가?
  • RQ4기존 HLS 컴파일러는 이러한 최적화를 얼마나 자동으로 적용하는가? 수동 변환 기법이 최고 성능을 달성하는 데 어떤 역할을 하는가?
  • RQ5성능 엔지니어와 컴파일러 개발자가 HLS로 생성된 하드웨어를 최적화하는 데 안내할 수 있는 통합된 변환 도구상자를 구축할 수 있는가?

주요 결과

  • 하드웨어 인지 변환 기법의 적용으로 원시 HLS 구현 대비 HPC 커널에서 최대 29,950배의 누적 속도 향상을 달성했다.
  • 루프 불변 코드 이동, 루프 정규화, 루프 기울임 등의 기존 소프트웨어 최적화 기법은 HLS 환경에서도 여전히 관련성 있고 유익하다.
  • 파이ipel라인, 메모리 분할, 데이터 재사용 등의 변환 기법은 FPGA 기반 공간 아키텍처에서 처리량 향상과 지연 감소에 크게 기여한다.
  • 함수 메모이제이션, 스칼라 교체 등의 많은 표준 CPU/GPU 컴파일러 최적화 기법은 최소한의 적응으로 HLS에 직접 적용 가능하다.
  • 초기화, 그래프 분할, VLIW 등의 많은 전통적 컴파일러 변환 기법은 긴 합성 시간과 명령어 수준의 병렬성 부족으로 인해 HLS에서는 실현 불가능하거나 무의미하다.
  • 오픈소스 참조 코드는 HLS 컴파일러가 자동으로 성능 향상을 달성하지 못하며, 정교하고 목표 지향적인 최적화가 필요하다는 점을 입증한다.

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

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

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

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