Rajaは、主にHPCアプリケーションのアーキテクチャとプログラミングモデルの移植性を可能にするLawrence Livermore National Laboratory(LLNL)で主に開発されたC ++ソフトウェア抽象化のライブラリです。ラジャには2つの主な目標があります。
Rajaは、一般的に受け入れられる並列を拡張するビルディングブロックを提供することにより、ポータブルで平行ループ実行を提供します。 Rajaは、標準のC ++ 14の機能に依存しています。
Rajaの設計は、生産メッシュベースの多目的アプリケーションに取り組んでいる数十年の経験に根ざしています。このようなアプリケーションで使用されるアルゴリズムとソフトウェアエンジニアリングスタイルの多様性に基づいて、Rajaはアプリケーション開発者がRAJAの概念を適応させ、さまざまなコード実装パターンとC ++使用法に特化できるように設計されています。
Rajaは、KokkosやThrustなど、他のC ++移植性抽象化アプローチに見られる目標と概念を共有しています。ただし、他のモデルには存在しない概念と機能が含まれています。他のモデルでは、アプリケーションに基づいています。
Rajaは多様な生産アプリケーションで使用されていますが、非常に進行中の作業であることに注意することが重要です。 LLNLの研究者とアプリケーション開発者のコミュニティは、積極的に貢献しています。 GitHubリリースとして利用可能なバージョンには、ほとんど使用された適切なテストされた機能が含まれています。私たちのコアインターフェイスはかなり安定していますが、基礎となる実装は洗練されています。追加機能は、将来のリリースに表示されます。
RajaコードはGitHubリポジトリに存在します。リポジトリをクリックするには、コマンドを使用します。
git clone --recursive https://github.com/llnl/raja.git
次に、C ++ 14標準をサポートするC ++コンパイラを持っている場合、他のCmakeプロジェクトと同様にRajaを構築できます。システムのデフォルトコンパイラを使用してコードを構築する最も簡単な方法は、トップレベルのRajaディレクトリで次の一連のコマンドを実行することです(ソース内ビルドは許可されていません!):
mkdir build
cd build
cmake ../
make
Raja構成オプションの詳細は、Rajaユーザーガイド(以下のリンク)にあります。
また、Gitサブモジュールまたはインストールされたライブラリとして、CmakeプロジェクトでRajaを使用する方法を示すRajaテンプレートプロジェクトも維持しています。
Rajaユーザーガイドは、Rajaとその使用方法について学び始めるのに最適な場所です。
ユーザーガイド(Raja Develop Branch)の最新バージョン:https://raja.readthedocs.io
他のRajaリリースバージョンのドキュメントにアクセスするには:https://readthedocs.org/projects/raja/
Raja Portaility Suiteチュートリアル資料のリポジトリを維持しています:https://github.com/llnl/raja-suite-tutorial
Rajaを引用するには、次の参照を使用してください。
Rajaパフォーマンスポータビリティレイヤー。 https://github.com/llnl/raja
Da Beckingsale、J。Burmark、R。Hornung、H。Jones、W。Killian、AJ Kunen、O。Pearce、P。Robinson、BS Ryujin、Trw Scogland、「Raja:大規模な科学的アプリケーションのポータブルパフォーマンス」、2019年HPC(P3HPC)のパフォーマンス、携帯性、生産性に関するIEEE/ACM International Workshop。ここからダウンロードしてください
Raja Performance Suiteには、複数のRajaおよび非Rajaバリアントに実装されたループカーネルのコレクションが含まれています。さまざまなコンパイラを使用して、さまざまなプラットフォームでRajaのパフォーマンスを監視および評価するために使用します。多くの主要なコンパイラベンダーは、スイートを使用して、Rajaのような抽象化のサポートを改善しています。 Raja Performance Suiteは、Raja使用の例の優れたソースであり、さまざまなカーネルとRajaのバックエンドのRajaと非Rajaバリエーションを比較できます。
Raja Proxiesリポジトリには、いくつかの重要なHPCプロキシアプリケーションのRajaバージョンが含まれています。
Chaiは、Rajaと連携してRaja Kernelsで使用されたデータを自動的に実行するための適切なスペースに自動的にコピーするマネージド配列の抽象化を提供します。 Rajaを補完するものとして開発されました。
コアRaja開発チームとコミュニケーションをとる最も効果的な方法は、メーリングリストを介して[email protected]です
また、Raja Googleグループに参加できます。
質問がある、バグを見つけたり、Rajaの機能や適用性の拡大についてのアイデアがあり、その開発に貢献することに興味がある場合は、お気軽にお問い合わせください。私たちは、ラジャを改善し、それを使用する新しい方法を探求することに非常に興味があります。
Rajaチームは、Gitflow開発モデルに従います。 Rajaに貢献したい人は、Raja develop
Branchから作成された機能ブランチに自分の作品を含めるべきです。そのブランチには、ラジャの最新の作品が含まれています。次に、宛先としてdevelop
ブランチを使用してプルリクエストを作成します。定期的に、開発ブランチをmain
ブランチにマージし、新しいリリースにタグを付けます。
Raja Contributorsページをご覧ください。プロジェクトへの貢献者の完全なリストをご覧ください。
Rajaは、BSD 3-Clauseライセンスの下でライセンスされています。
Rajaプロジェクトの著作権と特許は、貢献者によって保持されています。 Rajaに貢献するために著作権割り当ては必要ありません。
無制限のオープンソース-BSD 3-Clouse Distribution LLNL-CODE-689114
OCEC-16-063
リリースの詳細と制限については、以下の情報をご覧ください。
個々のファイルには、完全なライセンステキストの代わりにSPDXタグが含まれています。これにより、こちらから入手可能なSPDXライセンス識別子に基づいてライセンス情報の機械処理が可能になります:https://spdx.org/licenses/
BSD 3節としてライセンスされているファイルには、ライセンスヘッダーに次のテキストが含まれています。
SPDX-License-Identifier: (BSD-3-Clause)
Rajaは、GITリポジトリのサブモジュールとして外部依存関係をバンドルします。これらのパッケージは、さまざまな寛容なライセンスでカバーされています。概要リストが続きます。詳細については、各パッケージに含まれているライセンスを参照してください。
パッケージネーム:BLT
PackageHomepage:https://github.com/llnl/blt
PackageLicensededeclared:BSD-3-clause
パッケージネーム:キャンプ
PackageHomepage:https://github.com/llnl/camp
PackageLicensededeclared:BSD-3-clause
パッケージネーム:カブ
packagehomepage:https://github.com/nvlabs/cub
PackageLicensededeclared:BSD-3-clause
パッケージネーム:Rocprim
PackageHomepage:https://github.com/rocmsoftwareplatform/rocprim.git
PackageLicensededeclared:MITライセンス