jfalcou/eve
Expressive Vector Engine - SIMD in C++ Goes Brrrr
何を解決するか
EVE は、高パフォーマンスな C++20 ライブラリであり、SIMD(Single Instruction, Multiple Data)プログラミングモデルを簡素化することを目的としています。さまざまなハードウェアアーキテクチャ向けに SIMD 拡張セットの型ベースのラッパーを提供し、開発者がアーキテクチャ固有のアセンブリやイントリニシックを手動で書かずに、高レベルの抽象化を保ちつつ効率的な低レベルコードを書けるようにします。
動作方法
このライブラリは C++20 の機能——Concepts、テンプレートラムダ、if constexpr——を活用して、SIMD 操作の汎用インターフェースを構築しています。現代の CPU の命令セットをラッピングする形で動作し、Intel(SSE、AVX、AVX512)および ARM(NEON、SVE)アーキテクチャを広くサポートしており、PowerPC(VMX、VSX)についても部分的なサポートを提供しています。
対象ユーザー
主に、複数のハードウェアターゲット上で CPU のスループットとパフォーマンスを最大化する必要がある、ハイパフォーマンスコンピューティング(HPC)および低レベルシステムプログラミングに従事する開発者を対象としています。
特徴
- 広範なアーキテクチャ対応:Intel SSE2 から AVX512、ARM NEON/SVE までを積極的にサポート。
- 現代的な C++ 標準:C++20 専用に設計されており、現代的な設計パターンを活用し、SIMD API の設計の限界を押し広げています。
- 高レベルの抽象化:効率的な SIMD コードを実装しつつ、高レベルで表現力豊かな API を維持できます。
- 研究指向:SIMD ライブラリの最適な設計と実装の決定を探索する研究プロジェクトとして開発されています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト