The algorithm implementation is shown in the following figure:
There are four functional blocks as shown in the figure:
- QueuePop is responsible to load the next vertex in the priority queue and pass it to the loadOffset.
- loadOffset loads the offset value associate with current vertex from the CSR offset values and pass it to the next block.
- loadCol&Wei loads the ID and weight of the next hop vertices according to the offset values. It passes these IDs and weights to the loadRes.
- Queue pushes the next hop vertices into the priority queue. It sorts the priority again.
This system starts from pushing the source vertex into the queue and iterate until the queue is empty.