Vitis™ BLAS 库提供:
Vitis BLAS 库包含以下矩阵及向量运算函数:
矩阵运算函数:
矢量运算函数:
矩阵-矢量运算函数:
Vitis BLAS 库提供三种类型的函数实现方案:L1 原语函数、L2 内核函数和 L3 软件 API 函数。FPGA 硬件开发人员可利用 L1 原语函数。L2 内核函数通过集成 L1 原语函数和数据移动器构建,这些数据移动器可通过支持 XRT 运行时库的主机代码调用。L3 软件 API 函数提供 C、C++ 和 Python 函数接口,允许纯软件开发人员将 BLAS 运算交由 AMD 平台完成,无需其它与硬件相关的配置。下表列出了一部分这三种类型的函数。请注意,Vitis BLAS 库目前不提供任何在 Versal AI 引擎上运行的函数。
Vitis BLAS 库特性 | L1 原语函数 |
---|---|
amax、amin: 搜索向量元素位置 | |
asum:累加向量元素的大小 | |
dot:计算两个向量的点积 | |
axpy:计算向量标量乘积,并与向量相加 | |
nrm2:计算一个向量的欧氏范数 | |
swap、scal、copy:交换、缩放或复制向量 | |
symv:对称矩阵向量乘法 | |
trmv:三角矩阵向量乘法 | |
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 函数。FPGA 硬件开发人员可利用 L1 原语函数。L2 内核函数通过集成 L1 原语函数和数据移动器构建,这些数据移动器可通过支持 XRT 运行时库的主机代码调用。L3 软件 API 函数提供 C、C++ 和 Python 函数接口,允许纯软件开发人员将 BLAS 运算交由 AMD 平台完成,无需其它与硬件相关的配置。下表列出了一部分这三种类型的函数。请注意,Vitis BLAS 库目前不提供任何在 Versal AI 引擎上运行的函数。
对于 L1 子目录:
对于 L2 子目录:
对于 L3 子目录:
Vitis GitHub 存储库中提供的库可通过上面介绍的、针对 L2 和 L3 函数提供的生成文件或 Vitis IDE 来编译。要在 IDE 中使用该库,首先得按库模板下载,然后必须使用该模板创建一个新的 Vitis 项目。如欲进一步了解如何在 Vitis GUI 中使用库模板创建 L2 或 L3 应用,请参见这里。