google/highway

Performance-portable, length-agnostic SIMD with runtime dispatch

解決する課題

Highwayは、SIMD(Single Instruction, Multiple Data)およびベクトルプログラミングを実用的かつポータブルにするために設計されたC++ライブラリです。特定の命令セットごとにコアロジックを書き直すことなく、異なるCPUアーキテクチャ間で効率的に動作する高性能なコードを書くという問題を解決します。

仕組み

Highwayは、CPU命令に直接マッピングされるポータブルなベクトル組み込み関数のセットを提供します。開発者はアーキテクチャ固有のコードを書く代わりにHighwayの関数を使用し、ライブラリがターゲットプラットフォームに適した命令にマッピングします。静的ディスパッチ(コンパイル時に特定の命令セットをターゲットにする)と動的ディスパッチ(実行時に利用可能な最適な命令セットを選択する)の両方をサポートしています。

対象ユーザー

画像処理、圧縮、ビデオ解析、線形代数、暗号化、ロボティクスなどの分野において、アプリケーションのパフォーマンスの限界を押し広げる必要があるソフトウェアエンジニアを対象としています。

ハイライト

  • 幅広いアーキテクチャサポート: x86、Arm、RISC-V、WebAssembly、IBM Z、LoongArch、POWERを含む7つの異なるアーキテクチャをサポートしています。
  • パフォーマンスの向上: 実行する命令数を減らすことで、エネルギー消費を削減し、5〜10倍の高速化を実現できます。
  • 柔軟なデプロイメント: 実行時に最適な命令セットを選択することで、異種混在のクラウドやクライアントデバイス上でアプリケーションを実行できます。
  • 予測可能な結果: コンパイラの自動ベクトル化よりも堅牢で予測可能な代替手段を提供します。
  • 広範な操作セット: レガシーなデータ構造やスケーラブルなベクトルを最適化するためのGather、MaskedLoad、FixedTagなどのツールが含まれています。

関連

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