Vitis™ ソルバー ライブラリには、性能に最適化された行列分解、線形/固有値ソルバーなどの機能があります。これらは RADAR、LiDAR、コンピューター ビジョン、数理ファイナンスなど多様なアプリケーションでアクセラレーション アルゴリズムを設計する際に利用できます。
Vitis ソルバー ライブラリ カーネルは、エンベデッド/ホスト CPU コードで呼び出すことができるスタンドアロン アクセラレータとして使用できます。またその他の Vitis ライブラリのカーネルやプリミティブと組み合わせて、エンドツーエンドのプロセッシング パイプラインを高速化することも可能です。
現在利用できる主なアクセラレーション機能には、SVD (特異値分解)、QR LU (lower-upper) 分解、逆行列、三角ソルバー、固有値分解などがあります。
現在、Vitis ソルバー ライブラリには、密行列用に次の機能があります。
行列分解
線形ソルバー
固有値ソルバー
Vitis ソルバー ライブラリは、Vitis カーネル開発者のアプリケーション開発を効率化することを目的としており、2 層 (L1 と L2) の API を提供します。次の表では、各層の機能について説明しています。
Vitis ソルバー ライブラリ 2022.2 リリース では、QR 分解およびコレスキー分解の 2 つの機能が追加されています。
ソルバー ライブラリ機能 | |
---|---|
L1 | QR (Quadrature Rotation) 分解 |
QR_Inverse | |
SVD (特異値分解) | |
Cholesky_Inverse | |
コレスキー分解 | |
AIE の QR 分解 | |
AIE のコレスキー分解 | |
L2 | 行列分解 |
固有値ソルバー | |
線形ソルバー |
L1 API と L2 API の機能は次のとおりです。
L1 API | 行列分解を実行するための機能です。BRAM または URAM へのメモリ インターフェイスを備えた HLS コンポーネントとして設計されています。これらの API は、float、double、complex などの多様なデータ型に対応しています。L1 API は、すべての入力データをメモリ内に準備する必要があるため、入力行列の合計サイズには上限があります。 |
---|---|
L2 API | FPGA で動作するカーネルです。これらの API は倍精度の浮動小数点型に対応しています。入力として DDR/HBM を読み出して、出力として DDR/HBM に結果を書き込みます。これらはホスト側から呼び出し可能です。 |
Vitis ソルバー ライブラリは、アプリケーション開発の異なる段階に基づき L1 フォルダーと L2 フォルダーに分けられています。
L1: このフォルダー内の Makefile とソースにより、HLS ベースのフローが効率化し、迅速なチェックが可能になります。
L2: このフォルダー内の Makefile とソースにより、特定デバイスをターゲットとする OpenCL™/XRT フレームワークで記述されたホスト コードを使用して、カーネルのさまざまなソース (HDL、HLS、または XO ファイル) から XCLBIN ファイルを簡単にビルドできます。