Implementation - 2024.2 English

Vitis Libraries

Release Date
2025-05-14
Version
2024.2 English

The input matrix should ensure that the following conditions hold:

  1. directed graph
  2. No self edges
  3. No duplicate edges
  4. compressed sparse column (CSC) format

Note that this is not the “normalized” PageRank:

  1. The results are the same as some third-party graph databases. For example, Tigergraph.
  2. The results are the same as some third-party graph databases after normalized of order 1. For example, Spark.
  3. In the current version, the weighted PageRank algorithm is implemented by default.
  4. For the input unweighted graph, you still need to initialize the weight buffer manually to make the kernel work normally, as shown in the ./tests/host codes.

The algorithm implementation is shown in the following figure:

Figure 1 : PageRank calculate degree architecture on FPGA

Figure 1 PageRank calculate degree architecture on FPGA

Figure 2 : PageRank initiation module architecture on FPGA

Figure 2 PageRank initiation module architecture on FPGA

Figure 3 : PageRank Adder architecture on FPGA

Figure 3 PageRank Adder architecture on FPGA

Figure 4 : PageRank calConvergence architecture on FPGA

Figure 4 PageRank calConvrgence architecture on FPGA

As seen from the figure:

  1. Module calculate degree: first get the vertex node’s outdegree and keep them in one DDR buffer.
  2. Module initiation: initiate PR DDR buffers and constant value buffer.
  3. Module Adder: calculate Sparse matrix multiplification.
  4. Module calConvergence: calculate convergence of pagerank iteration.