alpaka-group/alpaka
Abstraction Library for Parallel Kernel Acceleration :llama:
何を解決するか
開発者が異なるハードウェアアクセラレータ上で並列カーネルを実行するために、CUDA、HIP、SYCLなどのベンダー固有のコードを別々に書く必要がなくなる。これにより、ユーザー定義のカーネルを一度の実装で、さまざまなCPUとGPU間でパフォーマンスを損なうことなくポータブルに実行できる。
動作方法
AlpakaはヘッダーオンリーのC++20ライブラリであり、並列化の下位レベルを抽象化する。仮想インデックスドメインを等しいサイズの「フレーム」に分割し、ハードウェアに依存せずにデータを走査する。アルゴリズムはこれらのフレームとワーカースレッドをデータにマッピングし、並列カーネル(SIMT)として計算を実行する。SIMDユニットも活用可能。CUDA、HIP、SYCL、OpenMPといった複数のバックエンドをサポートしており、単一のアプリケーション内で同時に使用可能で、異なるハードウェアベンダーをターゲットにできる。
対象ユーザー
高性能アプリケーションを開発・研究するアクセラレータ開発者や研究者向け。x86、ARM、RISC-Vなど多様なCPUアーキテクチャ、およびNVIDIA、AMD、IntelなどのGPUベンダーで効率的に動作する必要がある。
特徴
- パフォーマンスのポータビリティ:CPUおよびGPUアーキテクチャの両方で競争力のあるメモリ帯域幅性能を提供。
- マルチベンダー対応:NVIDIA、AMD、Intel GPUに加え、複数のCPUアーキテクチャと互換性がある。
- 柔軟なインデックス指定:CUDAやSYCLなどのネイティブモデルとは異なり、3次元に制限されない。
- 組み込みプリミティブ:
iota、transform、reduce、transform-reduceなどのヘルパー関数を提供し、開発を簡素化。 - メモリ管理:ホスト、デバイス、マップ、マネージドな多次元ビューを提供し、データ操作をサポート。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト