OPS (構造化メッシュ ソルバー用のオックスフォード並列ライブラリ) は、マルチブロック構造化メッシュアルゴリズムを作成するための高レベルの組み込みドメイン固有言語であり、マルチコアおよびメニーコア アーキテクチャでの自動並列化を可能にする、対応するソフトウェア ライブラリおよびコード変換ツールです。 。マルチブロック構造のメッシュ。 OPS API は C/C++ および Fortran に組み込まれています。
このリポジトリにはバックエンド ライブラリとコード ジェネレーターの実装が含まれており、次のような構造になっています。
ops
: ユーザーおよびランタイム OPS C/C++ API の実装apps
: C でのアプリケーションの例。これらはユーザー アプリケーション コードの例であり、OPS コード ジェネレーターによって生成されたターゲット並列コードも含まれます。ops_translator
: C/C++/Fortran API 用の Python/Clang/Fparser/jinja2 ベースの OPS コード ジェネレーター (新しいコード生成エンジン)。注: 「ドキュメントを読む」に記載されている手順を参照してください。このコード生成を利用するために必要な Python の依存関係の詳細については、を参照してください。ops_translator_legacy
: C/C++/Fortran API 用の Python OPS コード ジェネレーター (古いコード生成エンジン)scripts
: 環境変数の設定とアプリケーションのテスト用のサンプル スクリプトcmake
: cmake インストール ファイルmakefiles
: makefile ベースのインストール ファイルdoc
: ドキュメントOPS ドキュメントは Read the Docs で参照できます。
OPS を引用するには、次の論文を参照してください。
IZ Reguly、GR Mudalige、MB Giles、「OPS を使用した実行時の大規模ステンシル コードのループ タイル化」、IEEE Transactions on Parallel and Distributed Systems、vol. 29、いいえ。 4、pp. 873-886、2018 年 4 月 1 日、土井: 10.1109/TPDS.2017.2778161。
@ARTICLE{Reguly_et_al_2018,
author={Reguly, István Z. and Mudalige, Gihan R. and Giles, Michael B.},
journal={IEEE Transactions on Parallel and Distributed Systems},
title={Loop Tiling in Large-Scale Stencil Codes at Run-Time with OPS},
year={2018},
volume={29},
number={4},
pages={873-886},
doi={10.1109/TPDS.2017.2778161}}
OPS のバグや問題を報告する推奨される方法は、リポジトリの問題トラッカーを介して問題を送信することです。ユーザーは、OP-DSL チームに連絡して作成者に直接電子メールを送信することもできます。
OPS に貢献するには、次の手順を実行してください。
develop
ブランチへのプル リクエストを作成して、変更を送信します。新しいリリースを作成するときに、 develop
ブランチのコントリビューションは master ブランチにマージされます。
OPS は、BSD 3 条項ライセンスに基づいてオープンソース プロジェクトとしてリリースされます。詳細については、LICENSE というファイルを参照してください。