- 概观
- 开始体验
配置
AMD Vitis™ Graph Library 提供:
- 在各种使用场景中快速实现 FPGA 加速图分析
- 用 C/C++ 编写的高层次软件接口,无需任何额外的硬件配置,即可轻松使用
- 用 HLS 编写的低层次硬件接口,可实现更大的灵活性和控制能力

功能
目前,Vitis Graph Library 包含以下用于执行图算法的函数:
- 相似性分析函数
- 余弦相似性、Jaccard 相似性、K 最近邻居
- 用于集中分析的函数
- PageRank
- 路径查找函数
- 单源最短路径、多源最短路径、最小生成树和估计直径
- 连接分析函数
- 弱连接分量和强连接分量。
- 社区检测函数
- Louvain 模块化(从 22.1 开始,Louvain API 可以支持大比例图)、标签传播和三角计数。
- 搜索函数
- 宽度优先搜索和 2 跃点搜索。
- 图格式函数
- 重编号、度计算和 CSR/CSC 格式互转。
函数实现类型
Vitis Graph Library 提供三种类型的函数实现方案,即 L1 原语函数、L2 内核函数和 L3 软件 API 函数。FPGA 硬件开发者可利用 L1 原语函数。L2 内核函数通过整合 L1 原语函数和数据移动器构建而成,可通过 Vitis 运行时库由主机代码调用。L3 软件 API 函数提供 C++ 函数接口,允许纯软件开发者将图运算交由 AMD 平台完成,无需其他与硬件相关的配置。下表列出了一部分这三种类型的函数。请注意,Vitis Graph Library 目前不提供任何在 Versal AI Engine 上运行的函数。
Vitis Graph Library 函数 | L1 原语函数 |
---|---|
denseSimilarity:密集图的相似性函数 | |
generalSimilarity:支持密集和稀疏的相似性函数 | |
sortTopK:输入数据顶部 K 的排序函数 | |
sparseSimilarity:稀疏图的相似性函数 | |
L2 内核函数 | |
bfsImpl:广度优先搜索算法 | |
calcuDegree:度数计算算法 | |
connectedComponentImpl:连通分量计算算法 | |
convertCsrCsc:在 CSR 和 CSC 之间转换图格式 | |
labelPropagation:标注传播算法 | |
pageRankTop:分页算法 | |
注意:完整的 L2 内核函数列表和简介可在此处找到 | |
L3 软件 API 函数 | |
opBFS 类:广度优先搜索算法 | |
opSCC 类:强连接分量计算 | |
opTriangleCount 类:统计三角形的数量 | |
注意:完整的 L3 软件 API 函数列表和简介可在此处找到。 |
如欲详细区分 L1 原语与 L2 内核函数,请参见下表。
L1 原语函数 |
|
L2 内核函数 |
|
L3 软件 API 函数 |
|
组织
三种类型的实现在 Github 中相应的 L1、L2 和 L3 目录中组织。下图显示了 Vitis Graph Library 的主要组织结构,每个组织结构都与应用开发的不同阶段有关。
对于 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 图形用户界面中执行
Vitis GitHub 仓库中可用的库可以使用为 L2 和 L3 函数提供的 Makefile(如上所述)或 Vitis IDE 进行编译。要在 IDE 中使用该库,必须首先将其作为库模板下载,然后必须使用该模板创建一个新的 Vitis 项目。有关使用 Vitis 图形用户界面中的库模板创建 L2 或 L3 应用的更多信息,请点击此处。