giaf/blasfeo

Basic linear algebra subroutines for embedded optimization

何を解決するか

BLASFEO は、プロセッサのキャッシュ内に収まる小さな行列に特に最適化された、高性能な基本線形代数ルーチンを提供します。これは、埋め込み最適化アプリケーションで一般的に使用される行列を扱う際に、標準的な BLAS ライブラリで見られる性能オーバーヘッドを解消します。

動作方法

このライブラリは、互換性を確保するための標準的な BLAS API と、小規模な演算のオーバーヘッドを最小限に抑えるために設計された専用の BLASFEO API の2つの異なる API を提供します。キャッシュ効率を向上させるために独自の「パネルメジャー」行列形式を採用し、多数の x86 および ARM アーキテクチャ向けにターゲット特化されたアセンブリ実装も利用しています。ユーザーは、ニーズに応じて高性能、参照、または外部ラッパー実装のいずれかを選択できます。

対象ユーザー

Intel、AMD、ARM(Apple M1、Cortexシリーズなど)を含むさまざまなハードウェアターゲット上で、小さな行列に対する高速な線形代数演算を必要とする埋め込み最適化アプリケーション開発者向けに設計されています。

主な特徴

  • キャッシュ最適化: 一般的に各次元が数百程度までの行列に特化して調整されています。
  • 広範なハードウェア対応: AVX-512、AVX2、SSE、ARM NEON など多数のアーキテクチャに対応しています。
  • 柔軟なフォーマット: 標準の列優先形式に加え、より高速な独自のパネルメジャー形式もサポートしています。
  • 非破壊 API: BLASFEO API は出力用の追加引数を含んでおり、入力データの変更を防ぎます。

関連

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