BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース IntelがData Parallel C++を新たに開発中

IntelがData Parallel C++を新たに開発中

原文(投稿日:2019/07/06)へのリンク

Software Technology Day in Londonで発表されたIntelの新言語Data Parallel C++は、ヘテロジニアス(heterogeneous)アーキテクチャをプログラムするための、統一的で業界を越えた、単一ソース言語の提供を目標としている。

C++がベースであることから命名されたData Parallel C++は、アルゴリズムに固有の並列性を活用したプログラムを、ポータブルに作成可能にすることを目指している。ハードウェアの並列性を活用する既存のアーキテクチャの不均一性(heterogeneity)のため、これは現在でも難しい問題なのだ。現時点において、DPC++が標準C++とどの程度違うのかは明確になっていない。しかしIntelは、OpenCLベースのヘテロジニアスプラットフォーム上で動作するシングルソースプログラム用の高レベルプログラミングモデルであるSYCLの導入を明らかにしている。SYLCはその目標の一部、具体的には、CPUやGPU、DSP、FPGAを含む複数のヘテロジニアスアーキテクチャ場で動作可能な、C++のシングルソースプログラムを記述可能にする、という目標をDPC++と共有する。

タスクとデータの並列処理を活用するために異種アーキテクチャのプログラミングを可能にする試みは、DPC++が初めてではない。同じ目的を追求するプロジェクトは、OpenCLC++ AMP、前述のSYCL、NVIDIA CUDAなど、他にも存在する。これらのプロジェクトのおもな差別化要因は、シングルソースプログラミングモデルをサポートするかどうかと、標準C++に依存したものか、あるいはコードをポータブルにすることが簡単ではない言語標準を拡張したものか、という2点である。それぞれのプロジェクトは、物理ハードウェアをマッピングする独自の抽象化を提供しているが、CUDAなどベンダ固有のソリューションを除けば、これを理由として、特定のハードウェアプラットフォームでのみ使用可能な拡張機能は利用できなくなっている — プログラマがポータビリティを諦めない限り — のが一般的だ。

これら言語やライブラリの大きな問題は、一般的にはパフォーマンスポータビリティに尽きる。つまりは、あるアーキテクチャ上で動作するプログラムのパフォーマンスレベルが、他のアーキテクチャ上で実行する場合にも維持できるか、という問題だ。OpenCLの場合、これは固有の言語特性よりも、対象とするアーキテクチャの基盤にあるカーネルの品質によることになるが、実現するパフォーマンスに対して言語が強く影響することに変わりはない。高レベル言語では、提供される抽象化がそのプラットフォームにどの程度適しているかによって、プラットフォームによるパフォーマンスの違いが発生する可能性がある。

DPC++は、Intelのより大規模なプロジェクトであるOne APIの一部である。One APIはDPCの他、アクセラレーションのメリットを活用する典型的なワークロードを対象としたライブラリセット、分析およびデバッグ用ツールを含む、クロスプラットフォームなツールキットの提供を目標とするものだ。Intelは、DPC++を含むOne APIの開発者ベータを、2019年の第4四半期にリリースする予定である。

この記事に星をつける

おすすめ度
スタイル

BT