Vitis Graph Library is an open-sourced Vitis library written in C++ for accelerating graph applications in a variety of use cases. It now covers a level of acceleration: the pre-defined kernel level (L2), and will evolve to offer the module level (L1) and the software API level (L3).
Currently, this includes the following algorithm implementation:
- Similarity analysis: Cosine Similarity, Jaccard Similarity, k-nearest Neighbor.
- Centrality analysis: PageRank.
- Pathfinding: Single Source Shortest Path (SSSP), Multi-Source Shortest Path (MSSP), Minimum Spanning Tree and Estimated Diameter.
- Connectivity analysis: Weakly Connected Components and Strongly Connected Components.
- Community Detection: Louvain Modularity (From 22.1, Louvain API can support large-scale graphs), Label Propagation and Triangle Count.
- Search: Breadth First Search and 2-Hop Search.
- Graph Format: Renumber, Calculate Degree and Format Convertion between CSR and CSC.
Shell Environment
Setup the build environment using the Vitis and XRT scripts.
source <install path>/Vitis/2022.1/settings64.sh source /opt/xilinx/xrt/setup.sh export PLATFORM_REPO_PATHS=/opt/xilinx/platforms
Setting PLATFORM_REPO_PATHS
to the installation folder of platform files can enable makefiles
in this library to use PLATFORM
variable as a pattern.
Otherwise, full path to .xpfm file needs to be provided via PLATFORM
variable.
- API Document
- Design Internals
- Internal Design of Breadth-first Search
- Internal Design of Single Source Shortest Path
- Internal Design of Connected Component
- Internal Design of Strongly Connected Component
- Internal Design of Triangle Counting
- Internal Design of Label Propagation
- Internal Design of PageRank
- Internal Design of PageRankMultiChannels
- Internal Design of CalcuDgree
- Internal Design of Convert CSC CSR
- Internal Design of General Similarity
- Internal Design of Sparse Similarity
- Internal Design of Dense Similarity
- Internal Design of two hop path count
- Internal Design of Louvain Modularity
- Internal Design of Dense Similarity with Coefficient
- Internal Design of Renumber
- Internal Design of Minimum Spanning Tree
- Internal Design of Estimated Diameter
- Internal Design of Maximal Independent Set
- Internal Design of Merge
- User Guide
- API Document
- namespace xf::graph::L3
- louvainModularity
- twoHop
- pageRankWeight
- shortestPath
- cosineSimilaritySSSparse
- jaccardSimilaritySSSparse
- cosineSimilarityAPSparse
- jaccardSimilarityAPSparse
- cosineSimilaritySSDense
- cosineSimilaritySSDenseMultiCardBlocking
- cosineSimilaritySSDenseMultiCard
- jaccardSimilaritySSDense
- cosineSimilarityAPDense
- jaccardSimilarityAPDense
- knnSimilaritySSSparse
- knnSimilarinyAPSparse
- knnSimilaritySSDense
- knnSimilarityAPDense
- knnSimilarityAPSparse
- triangleCount
- labelPropagation
- bfs
- wcc
- scc
- convertCsrCsc
- L3 class
- namespace xf::graph::L3