[論文レビュー] Benchmarking OpenCL, OpenACC, OpenMP, and CUDA: programming productivity, performance, and energy consumption
本稿では、Intel Xeon PhiおよびGPUシステム上でSPEC AccelおよびRodiniaベンチマークスイートを用いて、OpenMP、OpenACC、OpenCL、CUDAの4つのフレームワークを、プログラミング生産性、パフォーマンス、エネルギー効率の観点からベンチマーク評価している。その結果、OpenMPはコード変更が最小限(全行の4.86%)で済む一方、OpenCLはOpenACCやCUDAに比べてはるかに多くの作業を要するが、IdaのようなGPUアクセラレータ搭載システムでは優れたパフォーマンスを発揮した。
Many modern parallel computing systems are heterogeneous at their node level. Such nodes may comprise general purpose CPUs and accelerators (such as, GPU, or Intel Xeon Phi) that provide high performance with suitable energy-consumption characteristics. However, exploiting the available performance of heterogeneous architectures may be challenging. There are various parallel programming frameworks (such as, OpenMP, OpenCL, OpenACC, CUDA) and selecting the one that is suitable for a target context is not straightforward. In this paper, we study empirically the characteristics of OpenMP, OpenACC, OpenCL, and CUDA with respect to programming productivity, performance, and energy. To evaluate the programming productivity we use our homegrown tool CodeStat, which enables us to determine the percentage of code lines that was required to parallelize the code using a specific framework. We use our tool x-MeterPU to evaluate the energy consumption and the performance. Experiments are conducted using the industry-standard SPEC benchmark suite and the Rodinia benchmark suite for accelerated computing on heterogeneous systems that combine Intel Xeon E5 Processors with a GPU accelerator or an Intel Xeon Phi co-processor.
研究の動機と目的
- 4つの主要な異種プログラミングフレームワーク(OpenMP、OpenACC、OpenCL、CUDA)のプログラミング生産性、パフォーマンス、エネルギー消費を評価・比較すること。
- 特定のターゲットシステムおよびアプリケーション環境に最も適したフレームワークを選択する課題に対処すること。
- 各フレームワークを用いたコード並列化に要する人的作業量(特にコード行の変更率)を定量的に測定すること。
- GPUおよびIntel Xeon Phiアクセラレータを搭載した実際の異種システム上で、実際のパフォーマンスおよびエネルギー消費を測定・比較すること。
- 生産性、パフォーマンス、エネルギー効率のトレードオフに基づくフレームワーク選定を支援する実証的データを提供すること。
提案手法
- プログラミング生産性の指標として、並列化に要するコード行の変更率を測定するため、独自開発のツール「CodeStat」を採用した。
- GPUおよびIntel Xeon Phiアクセラレータ搭載システムにおけるパフォーマンスとエネルギー消費の両方を測定するため、MeterPUの拡張版であるx-MeterPUを開発した。
- 2つの異種システム(Ida:GTX Titan X GPU搭載、Emil:2つのIntel Xeon Phi E5プロセッサ搭載)を用いて実験を実施した。
- 業界標準のベンチマークスイート(SPEC AccelおよびRodinia)を用い、計算集約的カーネルをカバーする多様なワークロードを実行した。
- 全フレームワークおよびベンチマークに対して実行時間とエネルギー消費データを収集し、フレームワーク間の比較を可能にした。
- コード変更率、実行時間、エネルギー効率といった複数の指標を統合的に分析し、相対的インサイトを導出した。
実験結果
リサーチクエスチョン
- RQ1OpenMP、OpenACC、OpenCL、CUDAの4フレームワークにおいて、コード変更作業量(生産性指標)として測定した場合、それぞれのプログラミング生産性はどのように比較されるか?
- RQ2GPUおよびXeon Phiアクセラレータ搭載システムにおいて、OpenCL、OpenACC、OpenMP、CUDAのパフォーマンス差はどの程度か?
- RQ3同じベンチマークを実行する際、4つのフレームワークにおけるエネルギー消費はどのように変動するか?
- RQ4人的要因(開発者の作業量のばらつき)は、並列化タスクにおけるコード変更率にどの程度影響を及えるか?
- RQ5異種コンputングにおいて、生産性、パフォーマンス、エネルギー効率のバランスを最適化するには、どのフレームワークが最も適しているか?
主な発見
- OpenMPはコード変更が最小限で、全行の4.86%にとどまり、本研究において最も生産性の高いフレームワークであった。
- OpenCLはコード行の9.07%を変更する必要があり、OpenACCに比べてはるかに高い生産性コストを要した。
- Rodiniaベンチマークスイートにおいて、OpenCLはCUDAに比べて並列化に約2倍の作業量を要した。
- GPUアクセラレータ搭載システムIdaでは、LBMおよびMRI-QカーネルにおいてOpenCLがOpenACCを上回る実行時間を示したが、Stencilカーネルでは両者の結果は同等であった。
- Idaシステム上では、OpenMP、OpenCL、CUDAのパフォーマンスおよびエネルギー消費が類似した値を示し、同程度の効率的プロファイルを示した。
- 人的要因がコード変更率に顕著な影響を及えたことから、異なるフレームワークにおける開発者作業のばらつきが顕著に確認された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。