- 概要
- 利用開始
機能概要
AMD Vitis™ グラフ ライブラリの特長:
- さまざまなユース ケースに対応するグラフ解析を高速化するための FPGA アクセラレーション機能
- C/C++ で記述された上位レベルのソフトウェア インターフェイスにより、ハードウェアの設定を追加することなく簡単に適用できる
- HLS で記述された下位レベルのハードウェア インターフェイスにより、高度な制御を柔軟に実行できる

機能
現在、Vitis グラフ ライブラリには、グラフ アルゴリズムを実装する次の関数があります。
- 類似性解析の関数
- コサイン類似度、ジャッカード類似度、k 近傍法
- 中心性解析の関数
- PageRank
- 経路探索の関数
- 単一始点最短経路、複数始点最短経路、最小全域木、直径の推定
- 接続性解析の関数
- 弱連結成分、強連結成分
- コミュニティ検出の関数
- Louvain Modularity (バージョン 22.1 より、Louvain API は大規模グラフをサポート)、ラベル伝播法、三角形カウント
- 探索用の関数
- 幅優先探索、2 ホップ探索
- グラフ形式処理の関数
- 番号の再割り当て、次数計算、CSR と CSC 間の形式変換
関数の実装タイプ
Vitis グラフ ライブラリは、L1 プリミティブ関数、 L2 カーネル関数、L3 ソフトウェア API 関数という 3 つの実装タイプがあります。L1 プリミティブ関数は、主に FPGA ハードウェア開発者向けです。L2 カーネル関数は、L1 プリミティブ関数とデータ ムーバーを統合したもので、Vitis ランタイム ライブラリを使用してホスト コードから呼び出すことができます。L3 ソフトウェア API 関数では、C++ 関数インターフェイスを利用できるため、ソフトウェア開発者はハードウェア関連の複雑な設定を行う必要がなく、簡単にグラフ操作を AMD プラットフォームにオフロードできます。3 つのタイプの関数を次の表にまとめています。現在、Vitis グラフ ライブラリでは、Versal AI Engine で実行する関数を提供していません。
Vitis グラフ ライブラリの関数 | L1 プリミティブ関数 |
---|---|
denseSimilarity: 密グラフ向けの類似度計算関数 | |
generalSimilarity: 密および疎の両方に対応した類似度計算関数 | |
sortTopK: 入力データの上位 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 カーネル関数 |
|
L3 ソフトウェア API 関数 |
|
構成
3 つの実装タイプは、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 関数のビルドおよび実行に使用

Vitis GUI で実行
Vitis GitHub リポジトリで提供されているライブラリは、上記の L2 および L3 関数の Makefile または Vitis IDE のいずれかを使用してコンパイル可能です。IDE でライブラリを使用するには、まずライブラリ テンプレートとしてダウンロードし、そのテンプレートを使用して新しい Vitis プロジェクトを作成してください。Vitis GUI のライブラリ テンプレートを使用して L2 または L3 アプリケーションを作成する方法は、こちらをご覧ください。