- 概述
- 現在開始
庫藏內容
AMD Vitis™ BLAS 程式庫提供:
- 標準基礎線性代數子程式集 (BLAS),可快速實作成為 FPGA 硬體加速功能
- 以 C、C++ 和 Python 語言編寫的高階軟體介面,使用上更容易,不用另外配置硬體
- 以 HLS 編寫的低階硬體介面,提供更高的靈活度和控制能力

功能
Vitis BLAS 程式庫包含下列矩陣與向量運算函數:
矩陣運算函數:
- 一般矩陣乘法
向量運算函數:
- 搜尋向量元素的位置
- 累加向量元素的幅度
- 計算兩個向量的內積
- 計算向量與純量之乘積
- 計算向量的歐氏範數
- 交換、縮放、複製向量
矩陣向量運算函數:
- 一般矩陣向量乘法
- 一般帶狀矩陣向量乘法
- 對稱矩陣和向量乘法
- 三角矩陣和向量乘法
函數實作類型
Vitis BLAS 程式庫提供三種類型的函數實作,即 L1 基元函數、L2 內核函數,以及 L3 軟體 API 函數。L1 基元函數可供 FPGA 硬體開發人員上手活用。L2 內核函數是以 L1 基元函數和資料移動器整合構成,可由主機程式碼透過 Vitis 執行階段程式庫叫出。L3 軟體 API 函數提供 C、C++ 和 Python 函數介面,以便純軟體開發人員將 BLAS 運算工作卸載到 AMD 平台,不用另外進行硬體相關配置。下表列出了屬於這三種類型的一些函式。請注意,Vitis BLAS 程式庫目前不提供在 Versal AI Engine 上執行的任何函數。
Vitis BLAS 程式庫函數 | L1 基元函數 |
---|---|
amax、amin:搜尋向量元素位置 | |
asum:累加向量元素的幅度 | |
dot:計算兩個向量的內積 | |
axpy:計算向量與純量之乘積後,再加進另一個向量中 | |
nrm2:計算向量的歐氏範數 | |
swap、scal、copy:交換、縮放或複製向量 | |
symv:對稱矩陣和向量乘法 | |
trmv:三角矩陣和向量乘法 | |
L2 內核函數 | |
Gemm class:一般矩陣乘法 | |
Gemv class:一般矩陣向量乘法 | |
L3 軟體 API 函數 | |
xfblasCreate:初始化程式庫並建立句柄 (handle) | |
xfblasFree:釋放 FPGA 器件的記憶體 | |
xfblasGetMatrix:將 FPGA 器件記憶體中的矩陣複製至主機 | |
xfblasExecute:開始執行內核並等待其完成 | |
附註:您可以在此處找到 L3 軟體 API 的完整函數清單和簡介。 |
L1 基元函數和 L2 內核函數的詳細差異,請參閱下表。
L1 基元函數 |
|
L2 內核函數 |
|
L3 軟體 API 函數 |
|
結構
Vitis BLAS 程式庫提供三種類型的函數實作,即 L1 基元函數、L2 內核函數,以及 L3 軟體 API 函數。L1 基元函數可供 FPGA 硬體開發人員上手活用。L2 內核函數是以 L1 基元函數和資料移動器整合構成,可由主機程式碼透過 Vitis 執行階段程式庫叫出。L3 軟體 API 函數提供 C、C++ 和 Python 函數介面,以便純軟體開發人員將 BLAS 運算工作卸載到 AMD 平台,不用另外進行硬體相關配置。下表列出了屬於這三種類型的一些函式。請注意,Vitis BLAS 程式庫目前不提供在 Versal AI Engine 上執行的任何函數。
L1 子目錄:
- include/hw:基元函數的標頭檔
- tests/hw:含資料移動器和基元函數的頂層模組
- tests/sw:用於呼叫基元函數的測試平台與基礎架構支援
適用於 L2 子目錄:
- include/hw:內核函式標題檔案
- include/sw:呼叫內核函數的主機模組
- tests/hw:含用於建構各實作內核函數的 Makefile
適用於 L3 子目錄:
- include/sw:軟體 API 函數的標頭檔
- tests/sw:含用於測試各實作軟體 API 函數的 Makefile

在 Vitis IDE 中執行
這些程式庫可在 Vitis GitHub 儲存庫中取得,且可運用程式庫提供的前述 L2 和 L3 函數 Makefile,或是在 Vitis IDE 中進行編譯。若要在 IDE 中使用程式庫,首先必須將其下載為程式庫範本,然後務必使用該範本建立新的 Vitis 專案。如需在 Vitis GUI 中使用程式庫範本建立 L2 或 L3 應用的更多相關資訊,請參閱此處。