概述
tools_and_services_tile_graphic

Vitis™ 求解器库具有性能优化的矩阵分解、线性/特征值求解器等。 它们可用于设计 RADAR、LiDAR、计算机视觉和数学金融等各种应用中的加速算法。

Vitis 求解器库内核可用作独立加速器,可由嵌入式/主机 CPU 代码调用。 它还可以与其他 Vitis 库内核和原语结合使用,以加速端到端处理流水线。

当前可用的主要加速功能包括 SVD(奇异值分解)、QR & LU (lower-upper) 分解、矩阵求逆、三角求解器和特征值分解。


Vitis 求解器库 – 特性

Vitis Solver 库目前包含对密集矩阵的以下操作:

矩阵分解

  • 对称正定矩阵的 Cholesky 分解
  • 无轴转及有部分轴转的 LU 分解
  • 一般矩阵的 QR 分解
  • 对称矩阵及非对称矩阵的奇异值分解 (SVD)(Jacobi 法)

线性求解器

  • 三对角线矩阵线性求解器(平行循环约化法)
  • 三角矩阵的线性求解器
  • 对称及非对称矩阵的线性求解器
  • 对称及非对称矩阵的逆矩阵

特征值求解器

  • 对称矩阵的 Jacobi 特征值求解器

可编程逻辑 (PL) 和 AI 引擎 (AIE) 阵列的函数表

Vitis Solver 库主要面向 Vitis 内核开发人员,可帮助他们加速应用开发。该库提供两层 API,即 L1 和 L2。L1 和 L2 函数均已列入下表。

Vitis Solver 库 2022.2 版增加了两个新的 AI 引擎功能:QR 分解Cholesky 分解

求解器库函数
L1 正交旋转 (QR) 分解
QR_Inverse
奇异值分解 (SVD)
Cholesky_Inverse
Cholesky 分解
AIE 的 QR 分解
AIE 的 Cholesky 分解
L2 矩阵分解
特征值求解器
线性求解器

L1 和 L2 API 的特性如下文所述。

L1 API 矩阵分解函数。设计为支持内存接口(指向 BRAM 或 URAM)的 HLS 组件。这些 API 支持各种数据类型,包括 float、double 或 complex。由于 L1 API 需要在内存中准备好所有输入数据,因此它们确实有输入矩阵总量的上限。
L2 API 在 FPGA 器件上运行的内核。这些 API 支持双精度浮点类型。它们不仅可通过读取 DDR/HBM 获得输入,而且还可通过写入 DDR/HBM 输出结果。它们可从主机端调用。

条理性

Vitis Solver 库可组织成 L1 及 L2 文件夹,每个文件夹都与应用开发的不同阶段有关。

L1:L1 中的 Makefiles 和源代码有助于快速检查基于 HLS 的流程。

L2:L2 中的 Makefiles 和源代码有助于使用在 OpenCL™/XRT 框架(针对一个器件)中写入的主机代码,从内核的各种来源(HDL、HLS 或 XO 文件)构建 XCLBIN 文件。

vitis-solver-library-org
入门