Skip to main content
QUICK REVIEW

[논문 리뷰] Strategy Preserving Compilation for Parallel Functional Code

Robert Atkey, Michel Steuwer|arXiv (Cornell University)|2017. 10. 23.
Parallel Computing and Optimization Techniques참고 문헌 25인용 수 5
한 줄 요약

이 논문은 데이터 레이스가 없는 병렬 명령형 코드로의 형식적 전환 파이프라인을 제안하며, 이는 새로운 형태의 이디얼라이즈드 알골(idealised algol)인 데이터 병렬 이디얼라이즈드 알골(DPIA)을 사용한다. 이 접근법은 하위구조적 타입 체계를 활용해 데이터 레이스 자유를 보장함으로써 정확성과 성능 이식성을 확보하며, 수작업 최적화된 OpenCL 코드 수준의 성능을 달성하면서도 기존 기능적 리라이팅 시스템에서의 병렬화 전략을 유지한다.

ABSTRACT

Graphics Processing Units (GPUs) and other parallel devices are widely available and have the potential for accelerating a wide class of algorithms. However, expert programming skills are required to achieving maximum performance. hese devices expose low-level hardware details through imperative programming interfaces where programmers explicity encode device-specific optimisation strategies. This inevitably results in non-performance-portable programs delivering suboptimal performance on other devices. Functional programming models have recently seen a renaissance in the systems community as they offer possible solutions for tackling the performance portability challenge. Recent work has shown how to automatically choose high-performance parallelisation strategies for a wide range of hardware architectures encoded in a functional representation. However, the translation of such functional representations to the imperative program expected by the hardware interface is typically performed ad hoc with no correctness guarantees and no guarantees to preserve the intended parallelisation strategy. In this paper, we present a formalised strategy-preserving translation from high-level functional code to low-level data race free parallel imperative code. This translation is formulated and proved correct within a language we call Data Parallel Idealised Algol (DPIA), a dialect of Reynolds' Idealised Algol. Performance results on GPUs and a multicore CPU show that the formalised translation process generates low-level code with performance on a par with code generated from ad hoc approaches.

연구 동기 및 목표

  • 병렬 기능 프로그래밍에서 성능 이식성 문제를 해결하기 위해, 고성능을 위해 수작업 최적화된 명령형 코드가 필요하지만 기기 간 이식성이 떨어지는 문제를 해결하기 위해.
  • 고수준 기능 추상화와 저수준 명령형 코드 생성 사이의 격차를 메우며, 현재는 정확성 보장과 전략 유지가 부족한 문제를 해결하기 위해.
  • 기능적 코드에서 데이터 레이스가 없는 명령형 코드로의 번역을 형식화하여 의도된 병렬화 전략을 유지함으로써 정확성과 성능 이식성을 확보하기 위해.
  • 형식적으로 검증된 컴파일 파이프라인을 통해 수작업 최적화된, 특수 목적에 맞춘 OpenCL 구현체와 비교해도 성능 수준을 달성할 수 있음을 보여주기 위해.

제안 방법

  • 레위너스의 이디얼라이즈드 알골을 기반으로 하되, 간섭 제어 기능을 갖춘 하위구조적 타입 체계를 적용한 새로운 언어인 데이터 병렬 이디얼라이즈드 알골(DPIA)을 도입하여 기능적 및 명령형 프로그래밍을 결합하고 강력한 안전 보장을 제공한다.
  • 레위너스의 연구에서 영감을 얻은 문법적 간섭 제어 타입 체계를 사용하여 생성된 명령형 코드에서 데이터 레이스 자유를 보장한다.
  • DPIA 내에서 기능적 코드에서 명령형 코드로의 의미 유지 및 전략 유지 번역을 형식화하여 OpenCL로의 체계적 컴파일링을 가능하게 한다.
  • 기존의 기능적 리라이팅 시스템(예: 스테우워 등 2015)을 활용해 컴파일 전에 고성능 병렬화 전략을 자동 탐색하고 선택한다.
  • 최종적으로 생성된 명령형 DPIA 코드를 C 유사 OpenCL 코드로 직접 매핑하여 간편하고 예측 가능한 컴파일 경로를 확보한다.
  • 관계적 정규성과 옴모타 이론적 모델을 활용해 컴파일 과정의 정확성과 비간섭성 특성을 형식적으로 검증한다.

실험 결과

연구 질문

  • RQ1고수준 기능적 코드에서 저수준 명령형 코드로의 번역 과정에서 형식적 컴파일 파이프라인은 의도된 병렬화 전략을 유지할 수 있는가?
  • RQ2기능적 추상화에서부터 데이터 레이스가 없는 명령형 코드를 생성할 수 있으며, 다양한 아키텍처에서 고성능을 유지할 수 있는가?
  • RQ3형식적으로 검증된 컴파일 과정은 수작업 최적화된 특수 목적의 OpenCL 비슷한 성능을 달성할 수 있는가?
  • RQ4기능적-비순수 언어인 DPIA에서 하위구조적 타입 체계를 통해 병렬 코드 생성 과정에서 데이터 레이스 자유를 효과적으로 보장할 수 있는가?

주요 결과

  • 기능적 코드에서 명령형 코드로의 형식화된 컴파일 파이프라인은 의도된 병렬화 전략을 유지하여, 기능 수준에서의 최적화 선택이 생성된 저수준 코드에 충실하게 반영됨을 보여준다.
  • DPIA의 하위구조적 타입 체계 덕분에 생성된 명령형 코드는 데이터 레이스가 없음을 증명 가능하므로 강력한 정확성 보장을 제공한다.
  • GPU와 다중코어 CPU에서의 성능 평가 결과, 수작업 최적화된 OpenCL 코드 수준의 성능을 달성함을 입증하였으며, 형식적 검증으로 인한 유의미한 오버헤드가 없음을 확인했다.
  • 자동 전략 탐색 기법(예: 스테우워 등 2015)을 형식적으로 정확한 컴파일 파이프라인에서 재사용할 수 있어 이식성과 신뢰성을 향상시켰다.
  • 형식적 프레임워크는 예측 가능하고 조합 가능한 컴파일링을 지원하여, GPU 외에도 FPGA와 다중코어 시스템을 포함한 이질적 아키텍처에 적합하다.

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

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

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

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