google/highway
Performance-portable, length-agnostic SIMD with runtime dispatch
解決する課題
Highwayは、SIMD(Single Instruction, Multiple Data)およびベクトルプログラミングを実用的かつポータブルにするために設計されたC++ライブラリです。開発者は、各プラットフォーム向けに個別のアーキテクチャ固有のイントリンジックを記述することなく、異なるアーキテクチャ間でCPUベクトル命令を活用した高性能なコードを記述できます。
仕組み
Highwayは、CPU命令に直接マッピングされる一連のポータブルなベクトル・イントリンジックを提供します。これにより、さまざまな命令セット(x86 AVX、Arm NEON、RISC-V RVVなど)間のハードウェアの違いを抽象化し、同じアプリケーションコードで複数のプラットフォームをターゲットにすることを可能にします。静的ディスパッチ(コンパイル時に特定の命令セットをターゲットにする)と動的ディスパッチ(実行時に最適な命令セットを検出する)の両方をサポートしています。
対象者
画像処理、線形代数、暗号学、ビデオ解析、圧縮などの分野で、CPUパフォーマンスの限界を押し広げる必要があるソフトウェアエンジニアを対象としています。
特徴
- 幅広いアーキテクチャサポート: x86、Arm、RISC-V、IBM Z、LoongArch、POWER、WebAssemblyにわたる27のターゲットをサポートしています。
- パフォーマンスのポータビリティ: 実行される命令数を減らすことで、5〜10倍の高速化と大幅なエネルギー削減を実現します。
- 柔軟なデプロイ: 動的ディスパッチを介して、実行時に最適な命令セットを検出することをサポートしています。
- 予測可能な結果: CPU命令にうまくマッピングされる関数を提供し、コンパイラの自動ベクトル化に頼るよりも堅牢なコードを実現します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト