Vitis™ BLAS ライブラリの特長
Vitis BLAS ライブラリでは、次のような行列やベクトルの演算関数を提供しています。
行列演算を実行するための関数:
ベクトル演算を実行するための関数:
行列とベクトルの演算を実行するための関数
Vitis BLAS ライブラリは、L1 プリミティブ関数、 L2 カーネル関数、L3 ソフトウェア API 関数という 3 つの実装タイプがあります。L1 プリミティブ関数は、主に FPGA ハードウェア開発者向けです。L2 カーネル関数は、L1 プリミティブ関数とデータ ムーバーを統合したもので、XRT ランタイム ライブラリを使用してホストコードから呼び出すことができます。L3 ソフトウェア API 関数では、C++、Python 関数インターフェイスを利用できるため、ソフトウェア開発者はハードウェア関連の複雑な設定を行う必要がなく、簡単にグラフ操作を AMD プラットフォームにオフロードできます。3 つのタイプの関数を次の表にまとめています。現在、Vitis BLAS ライブラリでは、Versal AI エンジンで実行する関数を提供していません。
Vitis BLAS ライブラリ関数 | L1 プリミティブ関数 |
---|---|
amax, amin: ベクトル内の特定の要素の位置を探す | |
asum: ベクトル内の要素の大きさを合計する | |
dot: 2 つのベクトルの内積を計算する | |
axpy: ベクトルとスカラーの積を計算し、ベクトルに加算する | |
dot: ベクトルのユークリッドノルムを計算する | |
swap, scal, copy: ベクトルの要素を交換、スケーリング、またはコピーする | |
symv: 対称行列とベクトルを乗算する | |
symv: 三角行列とベクトルを乗算する | |
L2 カーネル関数 | |
Gemm class: 一般的な行列乗算 | |
Gemv class: 行列とベクトルの乗算 | |
L3 ソフトウェア API 関数 | |
xfblasCreate: ライブラリを初期化し、ハンドルを作成する | |
xfblasFree: FPGA デバイス内のメモリを解放する | |
xfblasGetMatrix: FPGA デバイス内のメモリに格納された行列データをホスト コンピューターのメモリにコピーする | |
xfblasExecute: カーネルを開始し、終了するまで待機する | |
注記: L3 ソフトウェア API 関数の一覧表および説明は、こちらで確認できます。 |
L1 プリミティブ関数と L2 カーネル関数の詳細な違いについては、次の表を参照してください。
L1 プリミティブ関数 |
|
L2 カーネル関数 |
|
L3 ソフトウェア API 関数 |
|
Vitis BLAS ライブラリは、L1 プリミティブ関数、 L2 カーネル関数、L3 ソフトウェア API 関数という 3 つの実装タイプがあります。L1 プリミティブ関数は、主に FPGA ハードウェア開発者向けです。L2 カーネル関数は、L1 プリミティブ関数とデータ ムーバーを統合したもので、XRT ランタイム ライブラリを使用してホストコードから呼び出すことができます。L3 ソフトウェア API 関数では、C++、Python 関数インターフェイスを利用できるため、ソフトウェア開発者はハードウェア関連の複雑な設定を行う必要がなく、簡単にグラフ操作を AMD プラットフォームにオフロードできます。3 つのタイプの関数を次の表にまとめています。現在、Vitis BLAS ライブラリでは、Versal AI エンジンで実行する関数を提供しておりません。
L1 サブディレクトリ:
L2 サブディレクトリ:
L3 サブディレクトリ:
Vitis GitHub リポジトリで公開しているライブラリは、上記で紹介した L2、L3 関数用に提供されている Makefile を使用するか、Vitis IDE を使用してコンパイルできます。IDE でライブラリを使用するには、まずライブラリ テンプレートとしてダウンロードし、そのテンプレートを使用して新しい Vitis プロジェクトを作成してください。Vitis GUI でライブラリ テンプレートを使用する L2 または L3 アプリケーションの作成手順については、こちらを参照してください。