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などのヘルパー関数を提供し、開発を簡素化。
  • メモリ管理:ホスト、デバイス、マップ、マネージドな多次元ビューを提供し、データ操作をサポート。

関連

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