Abstract
The single-source shortest path (SSSP) problem arises in many different fields. In this paper, we present a GPU SSSP algorithm implementation. Our work significantly speeds up the computation of the SSSP, not only with respect to a CPU-based version, but also to other state-of-the-art GPU implementations based on Dijkstra. Both GPU implementations have been evaluated using the latest NVIDIA architectures. The graphs chosen as input sets vary in nature, size, and fan-out degree, in order to evaluate the behavior of the algorithms for different data classes. Additionally, we have enhanced our GPU algorithm implementation using two optimization techniques: The use of a proper choice of threadblock size; and the modification of the GPU L1 cache memory state of NVIDIA devices. These optimizations lead to performance improvements of up to 23 % with respect to the non-optimized versions. In addition, we have made a platform comparison of several NVIDIA boards in order to distinguish which one is better for each class of graphs, depending on their features. Finally, we compare our results with an optimized sequential implementation of Dijkstra's algorithm included in the reference Boost library, obtaining an improvement ratio of up to 19$$\times $$× for some graph families, using less memory space.
Highlights
Many problems that arise in real-world networks imply the computation of the shortest paths, and their distances, from a source to any destination point
This section describes the results of our experiments and the performance comparisons for the scenarios and input sets described in the previous section
In order to clarify the figure, we have only shown the results of one graphic processing units (GPUs) board, in this case Titan, because the execution times for the remaining platforms present the same trends related to size and degree
Summary
Many problems that arise in real-world networks imply the computation of the shortest paths, and their distances, from a source to any destination point. Algorithms to solve shortest-path problems are computationally costly. The Single-Source Shortest Path (SSSP) problem is a classical problem of optimization. The classical algorithm that solves the SSSP problem is Dijkstra’s algorithm [4]. Where n = |V | and m = |E|, the complexity time of this algorithm is O(n2) This complexity is reduced to O(m + n log n) when special data structures are used, as with the implementation of Dijkstra’s algorithm included in the Boost Graph Library [5] which exploits the relaxed-heap structures. The efficiency of Dijkstra’s algorithm is based on the ordering of previously computed results. This feature makes its parallelization a difficult task. Under certain situations, this ordering can be permuted without leading to wrong results or performance losses
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.