概述

AMD Vitis™ 求解器程式庫提供一系列效能最佳化的矩陣分解、線性/特徵值求解器和其他函數,這些函數可用於設計雷達、LiDAR、電腦視覺、計算金融和其他應用的加速演算法。

Vitis 求解器程式庫內核可當作獨立加速器,並在嵌入式/主機程式碼中呼叫,也可以結合其他 Vitis 程式庫內核和基元使用,以加速端對端處理管道。

目前可用的部分關鍵加速函數,包括奇異值分解 (SVD)、QR 與 LU(上下三角矩陣)分解、矩陣求逆、三角求解器與特徵值分解等。

功能

針對稠密矩陣,目前 Vitis 求解器程式庫收錄了以下運算法:

矩陣分解

  • Cholesky 分解,適用於對稱正定矩陣
  • 不軸轉 (pivoting) 及部分軸轉的 LU 分解
  • 一般矩陣的 QR 分解
  • 對稱和非對稱矩陣 SVD(奇異值分解)(Jacobi 法)

線性求解器

  • 三對角線性求解器(平行循環約化法)
  • 三角矩陣線性求解器
  • 對稱及非對稱矩陣的線性求解器
  • 對稱及非對稱矩陣的矩陣求逆

特徵值求解器

  • 對稱矩陣的 Jacobi 特徵值求解器

可程式化邏輯 (PL) 與 AI 引擎 (AIE) 陣列函數清單

Vitis 求解器程式庫的目標對象是 Vitis 內核開發人員,意在協助他們加速應用開發。此程式庫提供 L1 和 L2 兩層 API。L1 和 L2 的函數列於下表。

Vitis 求解器程式庫 2022.2 版新增兩個 AI 引擎函數:QR 分解Cholesky 分解

求解器程式庫函數
L1 QR(正交旋轉)分解
QR_Inverse
SVD(奇異值分解)
Cholesky_Inverse
Cholesky 分解
QR 分解(適用於 AIE)
Cholesky 分解(適用於 AIE)
 
L2 矩陣分解
特徵值求解器
線性求解器
L1 和 L2 API 特點說明如下
L1 API 用於矩陣分解的函數。設計成具備記憶體介面的高階合成 (High-level synthesis, HLS) 元件(指向 BRAM 或 URAM)。這類 API 支援多種資料類型,包括浮點、雙精度或複數。由於 L1 API 要求所有輸入資料都必須在記憶體中就緒,所以輸入矩陣的總大小有其上限。
L2 API 在 FPGA 器件執行的內核。這類 API 支援雙精度浮點類型。它們讀取 DDR/HBM 以取得輸入資料,然後寫入 DDR/HBM 以輸出結果。可從主控端呼叫。

結構

Vitis 求解器程式庫按照不同的應用開發階段,分為 L1 和 L2 資料夾。

L1:L1 中的 Makefile 與來源,可用來推進以 HLS 為基礎的流程,達到快速檢查的效果。

L2:L2 中的 Makefile 與來源,有助於運用各種來源類型的內核(HDL、HLS 或 XO 檔案)建置 XCLBIN 檔案,其中的主機程式碼,是以針對器件的 OpenCL™/Vitis 執行階段程式庫框架所編寫。 

AMD Vitis Solver Library Directories Diagram

資源