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、PowerPC など、幅広いアーキテクチャをサポートしています。

対象ユーザー

主に、複数のハードウェアプラットフォームで数値計算やデータ処理に必要なパフォーマンス最適化を実現する必要があるライブラリ作成者や開発者向けに設計されています。

主な特徴

  • 広範なハードウェア対応: AVX-512、ARM SVE、RISC-V など、多数の命令セットをサポート。
  • C++17 標準: C++17 対応コンパイラが必要。
  • 一貫した API: データのバッチに対して標準的な算術演算子を使用可能。
  • 業界での採用: Mozilla Firefox、Apache Arrow、Krita などの主要プロジェクトで使用されている。

関連

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