xtensor-stack/xsimd

C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, AVX512, NEON, SVE, WebAssembly, VSX, RISC-V))

解決する課題

xsimd は、SIMD (Single Instruction, Multiple Data) 組み込み関数に対して統一されたインターフェースを提供する C++ ライブラリです。マイクロプロセッサベンダーやコンパイラ間の差異という問題を解決し、特定の命令セットごとにロジックを書き直すことなく、さまざまなハードウェアアーキテクチャで高速化可能な高性能コードを記述できるようにします。

仕組み

このライブラリは、ハードウェア固有の SIMD 命令のラッパーとして機能します。ライブラリ作成者は、単一の値に対する算術演算子と同じものを使用して、数値のバッチを操作できます。また、これらのバッチに対して動作する一般的な数学関数の高速化された実装も提供しており、x86 (SSE, AVX)、ARM (NEON, SVE)、RISC-V、WebAssembly など、幅広いアーキテクチャをサポートしています。

対象ユーザー

主に、ライブラリ作成者や、複数のハードウェアプラットフォームをターゲットにする必要がある高性能数値計算アプリケーションを構築する開発者向けに設計されています。

主な特徴

  • 幅広いハードウェアサポート: AVX-512、ARM SVE、RISC-V、WebAssembly を含む膨大な命令セットをサポートしています。
  • 統一されたインターフェース: バッチ操作に対して標準的な算術演算子を使用できます。
  • 自動検出: コンパイル時に利用可能な最もパフォーマンスの高い命令セットを自動的に検出して使用できます。
  • 広範な採用: Apache Arrow、Pandas、Milvus (AI 用ベクトルデータベース) などの主要なプロジェクトで使用されています。

関連

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