Chapel (Cascade High Productivity Language )は、Cray社[ 3 ]によって開発され、後にCray社を買収したHewlett Packard Enterprise社によって開発された並列プログラミング言語です。これは、2010年までにスーパーコンピュータの生産性を向上させることを目標としたDARPAのHigh Productivity Computing Systems (HPCS)プログラムに参加していたCray Cascadeプロジェクトの一環として開発されました。Apacheライセンスのバージョン2の下でオープンソースプロジェクトとして開発されています。[ 4 ]
ChapelコンパイラはCとC++(C++14)で記述されています。バックエンド(つまりオプティマイザ)はLLVMで、C++で記述されています。Chapelのテストシステムや、ChapelのCバインディングを生成するツールであるc2chapelなどの一部のオプションコンポーネントには、Python 3.7以降が必要です。デフォルトでは、Chapelはバイナリ実行可能ファイルにコンパイルされますが、Cコードにコンパイルすることも可能で、その場合はLLVMは使用されません。Chapelコードは、C、Fortran、またはPythonなどから呼び出し可能なライブラリにコンパイルすることもできます。Chapelは、 NVIDIAおよびAMDグラフィックス処理ユニット用のコード生成を通じてGPUプログラミングをサポートしています。[ 5 ]
Chapelは、既存のプログラミング言語よりも高いレベルの表現を提供し、アルゴリズム表現とデータ構造の実装の詳細との分離を改善することによって、並列コンピュータ全般、特にCascadeシステムのプログラミング性を向上させることを目指しています。
言語設計者たちは、Chapelが、一方ではOpenMPやMPIなどの技術を使用して手続き型コードを記述するFortran、C、またはC++ユーザーである現在の高性能コンピューティング(HPC)プログラミング実務者と、他方ではJava、Python、またはMatlabを好む傾向があり、C++やCの経験があるのはごく一部である新卒のコンピュータプログラマーとの間のギャップを埋めることを目指している。Chapelは、前者のユーザーを遠ざけることなく、後者の言語群が提供する生産性の向上を提供するべきである。[ 2 ]
Chapel は、データ並列性、タスク並列性、ネストされた並列性のための抽象化をサポートすることで、高レベルでマルチスレッド並列プログラミング モデルをサポートします。データ分散とサブ計算のデータ駆動配置のための抽象化により、プログラム内のデータと計算の局所性の最適化が可能になります。オブジェクト指向の概念と汎用プログラミング機能により、コードの再利用性と汎用性を実現します。たとえば、Chapel ではロケールの宣言が可能です。[ 6 ]
Chapelは多くの先行言語から概念を借用していますが、その類似概念はHigh Performance Fortran(HPF)、ZPL、およびCray MTAのFortranとCへの拡張機能のアイデアに最も密接に基づいています。