庫藏內容

AMD Vitis™ 圖形程式庫提供下列優勢:

  • 在各種使用案例中,快速實作 FPGA 加速圖形分析
  • 以 C/C++ 語言編寫的高階軟體介面,使用上更容易,不用另外配置硬體
  • 以 HLS 編寫的低階硬體介面,提供更高的靈活度和控制能力 
AMD Vitis Graph Library Provisions Diagram

功能

目前,Vitis 圖形程式庫內含下列用於實作圖形演算法的函數:

  • 相似度分析函數
    • 餘弦相似度、Jaccard 相似度、K 近鄰演算法
  • 中心性分析函數
    • PageRank
  • 路徑搜尋函數
    • 單源最短路徑、多源最短路徑、最小生成樹及估計直徑
  • 連通性分析函數
    • 弱連通元件和強連通元件。
  • 社群偵測函數
    • Louvain 模組化(從 22.1 起,Louvain API 可支援大型圖)、標籤傳播和三角形數量計算。
  • 搜尋函數
    • 廣度優先搜尋和 2-Hop 搜尋。
  • 圖形格式函數
    • 重新編號、度數計算,以及 CSR 和 CSC 之間格式轉換。

函數實作類型

Vitis 圖形程式庫提供三種類型的函數實作,即 L1 基元函數、L2 內核函數,以及 L3 軟體 API 函數。L1 基元函數可供 FPGA 硬體開發人員上手活用。L2 內核函數是以 L1 基元函數和資料移動器整合構成,可由主機程式碼透過 Vitis 執行階段程式庫叫出。L3 軟體 API 函數提供 C++ 函數介面,以便純軟體開發人員將圖形運算工作卸載到 AMD 平台,不用另外進行硬體相關配置。下表列出了屬於這三種類型的一些函式。請注意,Vitis 圖形程式庫目前不提供在 Versal AI Engine 上執行的任何函數。 

Vitis 圖形程式庫函數 L1 基元函數
denseSimilarity:適用於稠密圖的相似度函數
generalSimilarity:一併支援稠密圖與稀疏圖的相似度函數
sortTopK:針對輸入資料進行 Top-K 排序的函數
sparseSimilarity:適用於稀疏圖的相似度函數
L2 內核函數
bfsImpl:廣度優先搜尋演算法
calcuDegree:度數計算演算法
connectedComponentImpl:連通元件計算演算法
convertCsrCsc:在 Csr 和 Csc 之間轉換圖形格式 
labelPropagation:標籤傳播演算法
pageRankTop:Pagerank 演算法 
附註:您可以在此處找到完整的 L2 內核函數清單和簡介
L3 軟體 API 函數
opBFS class:廣度優先搜尋演算法
opSCC class:強連通元件計算
opTriangleCount class:計算三角形的數量 
附註:您可以在此處找到 L3 軟體 API 的完整函數清單和簡介。

L1 基元函數和 L2 內核函數的詳細差異,請參閱下表。 

L1 基元函數

  • 主要目標用戶群是通曉硬體知識,且想要瞭解底層實作邏輯,並進行效能最佳化的開發人員;
  • 一律採用串流介面;
  • 通常是針對單一運算模組進行實作;
  • 無法用主機程式碼直接叫出;

L2 內核函數

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

L3 軟體 API 函數

  • 主要目標用戶群是純軟體工程師;
  • 函數參數與硬體無關;
  • 通常是用於部署;
  • 可用主機叫出;

結構

這三種類型的實作各自整理於對應的 Github L1、L2 和 L3 目錄中。下圖顯示的是 Vitis 圖形程式庫的主要結構,各自關聯至應用開發的不同階段。

L1 子目錄

  • include/hw:基元函數的標頭檔
  • tests/hw/kernel:含資料移動器和基元函數的頂層模組
  • tests/hw/host:用於呼叫基元函數的測試平台與基礎架構支援
  • tests/hw/Makefile:用於建構和執行基元函數

適用於 L2 子目錄

  • include/hw:內核函式標題檔案
  • tests/hw/kernel:每個內核函數的包裝函數
  • tests/hw/host:呼叫已編譯內核函數的主機模組
  • tests/hw/Makefile:用於建構和執行內核函數

適用於 L3 子目錄

  • include/sw:軟體 API 函數的標頭檔
  • tests/Makefile:用於建構和執行軟體 API 函數
AMD Vitis Graph Library Directories Diagram

在 Vitis GUI 中執行

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

資源