庫藏內容

AMD Vitis™ BLAS 程式庫提供:

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

功能

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 內核函數

  • 主要目標用戶群是熟悉 Vitis 執行階段程式庫 API 的主機程式碼開發人員;
  • 一律採用記憶體 (DDR/HBM) 介面;
  • 由 L1 基元函數和部分資料移動器模組鏈結而成;
  • 可用主機叫出;

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 BLAS Library L1 Sub-Directories

在 Vitis IDE 中執行

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

資源