We present a number of optimization techniques to compute prefix sums on linked lists and implement them on multithreaded GPUs using CUDA. Prefix computations on linked structures involve in general highly irregular fine grain memory accesses that are typical of many computations on linked lists, trees, and graphs. While the current generation of GPUs provides substantial computational power and extremely high bandwidth memory accesses, they may appear at first to be primarily geared toward streamed, highly data parallel computations. In this paper, we introduce an optimized multithreaded GPU algorithm for prefix computations through a randomization process that reduces the problem to a large number of fine-grain computations. We map these fine-grain computations onto multithreaded GPUs in such a way that the processing cost per element is shown to be close to the best possible. Our experimental results show scalability for list sizes ranging from 1M nodes to 256M nodes, and significantly improve on the recently published parallel implementations of list ranking, including implementations on the Cell Processor, the MTA-8, and the NVIDIA GeForce 200 series. They also compare favorably to the performance of the best known CUDA algorithm for the scan operation on the Tesla C1060.
[1]
Yao Zhang,et al.
Scan primitives for GPU computing
,
2007,
GH '07.
[2]
Mark J. Harris,et al.
Parallel Prefix Sum (Scan) with CUDA
,
2011
.
[3]
Joseph JáJá,et al.
An Introduction to Parallel Algorithms
,
1992
.
[4]
Guy E. Blelloch,et al.
Prefix sums and their applications
,
1990
.
[5]
Guy E. Blelloch,et al.
Vector Models for Data-Parallel Computing
,
1990
.
[6]
Joseph JáJá,et al.
Prefix Computations on Symmetric Multiprocessors
,
2001,
J. Parallel Distributed Comput..
[7]
David A. Bader,et al.
On the Design and Analysis of Irregular Algorithms on the Cell Processor: A Case Study of List Ranking
,
2007,
2007 IEEE International Parallel and Distributed Processing Symposium.
[8]
P. J. Narayanan,et al.
Fast and scalable list ranking on the GPU
,
2009,
ICS.
[9]
James Christopher Wyllie,et al.
The Complexity of Parallel Computations
,
1979
.
[10]
Joseph JáJá,et al.
Prefix computations on symmetric multiprocessors
,
1999,
Proceedings 13th International Parallel Processing Symposium and 10th Symposium on Parallel and Distributed Processing. IPPS/SPDP 1999.