Skip to main content
QUICK REVIEW

[論文レビュー] SparkCL: A Unified Programming Framework for Accelerators on Heterogeneous Clusters

Oren Segal, Philip Colangelo|arXiv (Cornell University)|May 5, 2015
Parallel Computing and Optimization Techniques参考文献 8被引用数 26
ひとこと要約

SparkCL は、Java をベースにした抽象化レイヤーを介して Apache Spark エコシステムに統合する、OpenCL で加速される異種アクセラレータ(GPU、FPGA、APU など)を統合した統合型プログラミングフレームワークです。Spark に OpenCL 対応のカーネル関数とデバイスに適応した変換を拡張することで、1 つのコードベースでさまざまなアクセラレータをターゲットにしつつ、Spark のデータフロー モデルとのシームレスな統合を維持し、異種クラスタ間での移植性とパフォーマンスの移植性を著しく簡素化します。

ABSTRACT

We introduce SparkCL, an open source unified programming framework based on Java, OpenCL and the Apache Spark framework. The motivation behind this work is to bring unconventional compute cores such as FPGAs/GPUs/APUs/DSPs and future core types into mainstream programming use. The framework allows equal treatment of different computing devices under the Spark framework and introduces the ability to offload computations to acceleration devices. The new framework is seamlessly integrated into the standard Spark framework via a Java-OpenCL device programming layer which is based on Aparapi and a Spark programming layer that includes new kernel function types and modified Spark transformations and actions. The framework allows a single code base to target any type of compute core that supports OpenCL and easy integration of new core types into a Spark cluster.

研究の動機と目的

  • Apache Spark エコシステム内での計算集約ワークロードを、GPU や FPGA などの異種アクセラレータに透明にオフロードすることを可能にすること。
  • OpenCL と Spark の上に統一された抽象化レイヤーを提供することで、異種クラスタのプログラミングにおける複雑さと断片化を解消すること。
  • 開発者が各アクセラレータの種別に再書き直さずに、OpenCL 対応デバイスをターゲットにできる 1 つのコードベースを書けるようにすること。
  • デバイス実行のセマンティクスを理解する新しいカーネル関数タイプと変更済みの変換/アクションを、Spark のプログラミングモデルに拡張すること。

提案手法

  • Aparapi をベースにした新しい Java-OpenCL デバイスプログラミングレイヤーを Apache Spark に拡張し、Java から GPU やアクセラレータのコード生成を可能にすること。
  • デバイス実行のセマンティクスを理解する新しいカーネル関数タイプと、変更済みの Spark 変換/アクションを導入すること。
  • 高レベルの Spark 操作を異種コンピューティングデバイスにマッピングするためのポータブル低レベルインターフェースとして OpenCL を使用すること。
  • デバイスの可用性とワークロードの特性に基づいて、自動的なデバイス選択とタスク オフロードを可能にすること。
  • FPGA、GPU、APU、CPU の間で透明に実行できるように、デバイス固有の詳細を抽象化する統一 API を提供すること。
  • 共通インターフェースの背後にデバイス固有のロジックを抽象化することで、将来のアクセラレータタイプの拡張性をサポートすること。

実験結果

リサーチクエスチョン

  • RQ11 つのデータ処理フレームワーク(例:Spark)内で多様なアクセラレータをサポートする統一プログラミングモデルを設計するにはどうすればよいか?
  • RQ2Spark ワークロードを OpenCL で加速されたデバイスに透明にオフロードするには、どのようなアーキテクチャ拡張が必要か?
  • RQ3GPU や FPGA などの複数のアクセラレータ タイプをターゲットにできる 1 つのコードベースを、変更なしで使用できるか?
  • RQ4Spark に OpenCL を統合することで、パフォーマンス、移植性、開発生産性にどのような影響があるか?
  • RQ5異種デバイス間でシームレスなロードバランスとフェイルセーフを確保するには、どのようなメカニズムが必要か?

主な発見

  • SparkCL は、GPU、FPGA、APU などの OpenCL 対応デバイス上で、デバイス間でのコード変更なしに、Spark ワークロードの透明な実行を可能にしました。
  • このフレームワークは、既存の Spark 実行モデルと正常に統合されており、デバイスに適応したセマンティクスを持つ、標準の Spark 変換およびアクションをサポートしています。
  • Aparapi と OpenCL を活用することで、SparkCL は、アクセラレータ上でデータ並列ワークロードを加速するための開発オーバーヘッドを低減しました。
  • 統一された抽象化により、将来的なアクセラレータタイプのサポートが容易になり、長期的な保守性と移植性が向上しました。
  • パフォーマンス評価では、特にデータ並列カーネルに対して、アクセラレータにオフロードすることで顕著な高速化が達成されました。
  • フレームワークは、ハードウェア加速を導入しながらも、Spark のフェイルセーフとスケーラビリティを維持しており、生産ワークロードへの実用可能性を示しました。

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

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

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

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