OCCA は、異種プラットフォーム上で並列プログラミングを行うための、オープンソースでポータブルなベンダー中立のフレームワークです。 OCCA API は、デバイス、メモリ、カーネルなどの異種プログラミング概念の統一モデルを提供し、OCCA カーネル言語 (OKL) は、C 言語へのディレクティブ ベースの拡張機能を使用してポータブル デバイス カーネルの作成を可能にします。
公共および民間部門のミッションクリティカルな計算科学および工学アプリケーションは OCCA に依存しています。著名なユーザーには、米国エネルギー省やシェルなどが含まれます。
主な特長
OCCA は CMake ビルド システムを使用します。すべてのビルド設定の包括的な概要と、Windows または Mac OS でのビルド手順については、インストール ガイドを確認してください。
便宜上、CMake ビルドを駆動するシェル スクリプトconfigure-cmake.sh
が提供されています。コンパイラ、フラグ、その他のビルド パラメータはそこで調整できます。デフォルトでは、このスクリプトはビルド ディレクトリとインストール ディレクトリに./build
と./install
使用します。
以下に、occa をビルド、テスト、インストールするためのシェル コマンドの一般的なシーケンスを示します。
$ ./configure-cmake.sh
$ cmake --build build --parallel < number-of-threads >
$ ctest --test-dir build --output-on-failure
$ cmake --install build --prefix install
依存関係が標準以外の場所にインストールされている場合は、対応する環境変数をこのパスに設定します。
インストール中に、環境モジュール ファイル<install-prefix>/modulefiles/occa
が生成されます。このモジュールがロードされると、インストールされたbin
、 lib
、およびinclude
ディレクトリへのパスがPATH
やLD_LIBRARY_PATH
などの環境変数に追加されます。
便宜上、OCCA はインストール中に構成される CMake パッケージ ファイルを提供します。これらのパッケージ ファイルは、インポートされたターゲットOCCA::libocca
を定義し、必要な依存関係をすべて検索します。
たとえば、OCCA を使用するダウンストリーム プロジェクトの CMakeLists.txt には次のものが含まれます。
find_package (OCCA REQUIRED)
add_executable (downstream-app ...)
target_link_libraries (downstream-app PRIVATE OCCA::libocca)
add_library (downstream-lib ...)
target_link_libraries (downstream-lib PUBLIC OCCA::libocca)
OCCA コマンドライン インターフェイスは<install-prefix>/bin/occa
にあります。このツールを使用すると、特定のプラットフォーム上のハードウェアおよび OCCA の構成に関する情報を照会できます。
たとえば、 occa info
を呼び出すと、利用可能な OCCA バックエンドと関連ハードウェア仕様が表示され、 occa env
呼び出すと、OCCA 関連の環境変数の値が表示されます。利用可能なすべてのオプションのリストを表示するには、 occa --help
を呼び出します。
$ occa info
========+======================+=================================
CPU(s) | Processor Name | AMD EPYC 7532 32-Core Processor
| Memory | 251.6 GB
| Clock Frequency | 2.4 MHz
| SIMD Instruction Set | SSE2
| SIMD Width | 128 bits
| L1d Cache Size | 1 MB
| L1i Cache Size | 1 MB
| L2 Cache Size | 16 MB
| L3 Cache Size | 256 MB
========+======================+=================================
OpenCL | Platform 0 | NVIDIA CUDA
| ----------------------+---------------------------------
| Device 0 | NVIDIA A100-PCIE-40GB
| Device Type | gpu
| Compute Cores | 108
| Global Memory | 39.40 GB
========+======================+=================================
CUDA | Device Name | NVIDIA A100-PCIE-40GB
| Device ID | 0
| Memory | 39.40 GB
========+======================+=================================
助けが必要ですか?リポジトリ Wiki をチェックアウトするか、Q&A ディスカッション カテゴリで質問してください。
フィードバックを提供するには、一般またはアイデアのディスカッション カテゴリで会話を開始してください。
この作品は以下の方々から一部支援を受けました。
OCCA は MIT ライセンスに基づいて利用可能です