alpaka-group/alpaka

Abstraction Library for Parallel Kernel Acceleration :llama:

何を解決するか

Alpaka は、異なるハードウェアアクセラレータ間でのパフォーマンスのポータビリティを提供するヘッダーオンリーの C++20 抽象化ライブラリです。開発者は、CUDA、HIP、SYCL、OpenMP などのベンダー固有 API 用に別々のコードを書くことなく、1 つの並列カーネル実装を書くことができます。

動作方法

Alpaka は、CUDA のグリッド・ブロック・スレッドモデルに類似したドメイン分割戦略を使用しています。アルゴリズムは、並列スレッドで実行される均一なワークアイテム(カーネル)の多次元グリッドに分割されます。これらのスレッドはブロックにグループ化され、ブロック内のスレッドは高速な共有メモリと低レベルの同期を介して相互に通信できます。ブロックは独立して実行されるため、実行時に利用可能なハードウェアに応じて実行を適応できます。

対象ユーザー

CPU(x86、ARM、RISC-V、Power 8+)および NVIDIA、AMD、Intel の GPU を含む多様なハードウェア上で高性能な並列コードを実行する必要があるアクセラレータ開発者や科学者向けです。

特徴

  • マルチバックエンド対応:CUDA、HIP、SYCL、OpenMP、std::thread、TBB をサポート。
  • パフォーマンスのポータビリティ:複数のプラットフォームで同じカーネル実装を使用可能。
  • ランタイム選択:どのアクセラレータバックエンドがカーネルを実行するかをランタイムで決定可能。
  • ヘッダーオンリー:ライブラリ自体のビルドが不要で、ヘッダーオンリー設計。
  • プラットフォーム非依存:Linux、Windows、macOS で動作可能。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト