Skip to main content
QUICK REVIEW

[論文レビュー] Building-Blocks for Performance Oriented DSLs

Tiark Rompf, Arvind K. Sujeeth|Sep 5, 2011
Parallel Computing and Optimization Techniques参考文献 49被引用数 23
ひとこと要約

本論文では、異種ハードウェア向けに高パフォーマンスで実行される埋め込みドメイン固有言語(DSL)を簡素に構築できる拡張性のあるツールキット、Delite Frameworkを提示する。Scalaにおける軽量モジュラー段階化(LMS)を活用することで、高水準な抽象化を通じて効率的なコード生成と積極的な最適化を実現し、OptiML(機械学習DSL)においてCPUおよびGPUプラットフォームで2.5倍のパフォーマンス向上を達成した。

ABSTRACT

Domain-specific languages raise the level of abstraction in software development. While it is evident that programmers can more easily reason about very high-level programs, the same holds for compilers only if the compiler has an accurate model of the application domain and the underlying target platform. Since mapping high-level, general-purpose languages to modern, heterogeneous hardware is becoming increasingly difficult, DSLs are an attractive way to capitalize on improved hardware performance, precisely by making the compiler reason on a higher level. Implementing efficient DSL compilers is a daunting task however, and support for building performance-oriented DSLs is urgently needed. To this end, we present the Delite Framework, an extensible toolkit that drastically simplifies building embedded DSLs and compiling DSL programs for execution on heterogeneous hardware. We discuss several building blocks in some detail and present experimental results for the OptiML machine-learning DSL implemented on top of Delite.

研究の動機と目的

  • 現代の異種ハードウェア(CPU、GPU、クラスタ)向けに高水準コードを効率的にコンパイルするという課題に対応する。
  • 従来、コンパイラ、並列処理、ターゲットアーキテクチャの深い専門知識を要するが、パフォーマンス指向のDSLを新規に構築する際の複雑さと作業負荷を軽減する。
  • パーサー、型チェック、コード生成のための共通で最適化されたビルディングブロックを再利用することで、DSL開発者がドメイン固有の抽象化に集中できるようにする。
  • データ並列およびタスク並列実行モデルを両方サポートする統一的かつ拡張可能なインfraストラクチャを提供し、多様なハードウェアプラットフォームで動作する。
  • 低レベルのハードウェア固有のモデル(例:CUDA、OpenMP)に代わって高水準でポータブルなDSLを使用することで、プログラマの生産性とコードの保守性を向上させる。

提案手法

  • Scalaにおける軽量モジュラー段階化(LMS)を活用し、コード生成と最適化を最初からサポートするドメイン固有のライブラリとしてDSLを埋め込む。
  • 型安全でオーバーロード可能な演算子と高階型を活用し、構文的アノテーションを用いずにステージド式を表現・合成する。
  • ホスト言語(Scala)内にコンパイラー・パイプラインを構築し、ドメインに特化した最適化を深さのある埋め込みと段階的コンパイルを用いて実行する。
  • タスク並列およびデータ並列をCPUとGPUの両方で透明に管理する統一ランタイムと統合する。
  • ドメインの意味論的知識を活用して、ループ統合、メモリレイアウト変換、カーネル特化などのドメイン固有最適化を適用する。
  • 共通の中間表現を用いて、高水準なDSL構文をCPUおよびGPU向けに最適化された低レベルカーネルに変換することで、異種コード生成をサポートする。

実験結果

リサーチクエスチョン

  • RQ1DSL開発者は、一般向けのコンパイラインfraを再実装することなく、異種アーキテクチャ向けに高パフォーマンスなコンパイラを構築するための作業負荷をどのように低減できるか?
  • RQ2Scalaにおける軽量モジュラー段階化(LMS)は、ドメインの意味論をコンパイラに露わにすることで、埋め込みDSLにおいて積極的かつ安全な最適化をどの程度可能にするか?
  • RQ3Deliteのような統一フレームワークは、CPUとGPUの両方でデータ並列およびタスク並列ワークロードを効果的にサポートできるか、かつ高いパフォーマンスを維持できるか?
  • RQ4実世界のワークロードにおいて、Deliteで構築されたDSLのパフォーマンスは、手動最適化された低レベル実装と比べてどの程度か?
  • RQ5ドメイン固有の知識は、DSLコンパイラにおける最適化の機会とコード生成の質にどのような影響を与えるか?

主な発見

  • Delite Frameworkは、共通のコンパイルインfraを再利用することで、高パフォーマンスなDSLの実装に著しく低い開発作業負荷を実現する。
  • Delite上に構築された機械学習DSLであるOptiMLは、CPU-GPUシステム上で実行した際、ベースライン実装と比較して2.5倍のパフォーマンス向上を達成した。
  • LMSの使用により、一般向けコンパイラでは実現が困難だった、ループ統合やメモリレイアウト変換などの積極的最適化が可能になった。
  • DeliteでコンパイルされたDSLは、いくつかの機械学習カーネルにおいて手動最適化されたCUDAコードと同等のパフォーマンスを達成したが、ハードウェアプラットフォーム間でのポータビリティを維持した。
  • フレームワークのモジュラー設計により拡張性が可能であり、新規DSLはコンパイラをゼロから実装するのではなく、既存のコンponentsを拡張することで構築できる。
  • 高水準な抽象化と段階的コンパイルによる低レベルコード生成の組み合わせにより、プログラマの生産性と高い実行時パフォーマンスの両立が実現された。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。