The Vitis™ Graph Library provides:
Currently Vitis Graph Library includes the following functions for the implementations of graph algorithm:
Vitis Graph Library provides three types of function implementations, namely L1 primitive functions, L2 kernel functions and L3 software API functions. L1 primitive functions can be leveraged by FPGA hardware developers. L2 kernel functions are built by integrating L1 primitive functions and data movers, which can be called by host codes with XRT Runtime Library. L3 software API functions provide C++ function interfaces to allow pure software developers to offload graph operations to AMD platforms without additional hardware related configurations. Some functions of the three types are listed in the table below. Note that Vitis Graph library currently does not provide any functions running on Versal AI Engine.
Vitis Graph Library functions | L1 primitive functions |
---|---|
denseSimilarity: similarity function for dense graph | |
generalSimilarity: similarity function which support both dense and sparse | |
sortTopK: sorting function for the top K of input data | |
sparseSimilarity: similarity function for sparse graph | |
L2 kernel functions | |
bfsImpl: breath-first search algorithm | |
calcuDegree: degree calculation algorithm | |
connectedComponentImpl: connected component calculation algorithm | |
convertCsrCsc: convert graph format between Csr and Csc | |
labelPropagation: the label propagation algorithm | |
pageRankTop: pagerank algorithm | |
Note: Full L2 kernel function list and introduction can be found here | |
L3 software API functions | |
opBFS class: bread-fist search algorithm | |
opSCC class: strongly connected component calculation | |
opTriangleCount class: counting the number of triangles | |
Note: Full L3 software API function list and introduction can be found here. |
For the detailed differentiation of L1 primitive and L2 kernel functions, please refer to the table below.
L1 primitive functions |
|
L2 kernel functions |
|
L3 Software API functions |
|
The three types of implementations are organized in their corresponding L1, L2 and L3 directories in Github. The diagram below shows the major organization of the Vitis Graph Library, each relating to a different stage of application development.
For L1 sub-directories:
For L2 sub-directories:
For L3 sub-directories:
The libraries available in the Vitis GitHub repository can be compiled by using either the provided Makefiles for L2 and L3 functions as introduced above or the Vitis IDE. To use the library in the IDE, it must be downloaded as a library template at first, then a new Vitis project must be created by using the template. More information about creating L2 or L3 applications using the library template in Vitis GUI can be found here.