Abstract:
Pathfinding algorithms, such as A*, are fundamental in solving graph traversal problems efficiently. A* is a point-to-point shortest path finding algorithm meaning, given a weighted graph, a source node and a goal node, the algorithm finds the shortest path (with respect to the given weights) from source to goal. Additionally, the bidirectional A* algorithm is a variation of the A* algorithm where the search is explored in both directions from the starting and ending nodes. While A* guarantees optimal solutions, its sequential nature poses challenges in exploiting the computational power of modern parallel architectures, particularly GPUs. This paper introduces a bidirectional bucket-based parallel A* algorithm (BBA*) tailored for GPU architectures, offering significant performance improvements over existing implementations. Our approach incorporates a bidirectional strategy, enabling the algorithm to operate simultaneously from the start and goal nodes, inherently increasing parallelism. By leveraging a bucket-based priority queue structure, we mitigate contention issues typically encountered with traditional heap-based designs, ensuring efficient workload distribution among GPU threads. Extensive experiments were conducted on grids with diverse sizes and obstacle configurations (i.e mazes, random obstacles, etc.) to evaluate the algorithm's performance in terms of time efficiency and the number of nodes explored. Results demonstrate that our implementation outperforms state-of-the-art parallel GPU implementations (like GA* and BGPQ A*). The proposed algorithm is particularly effective in complex grid scenarios, where its parallel processing capabilities significantly reduce execution time and the total number of nodes explored while maintaining optimality. BBA* can be up to 50 times faster than sequential CPU baselines and up to 40 times faster than the state-of-the-art GPU implementations.