Evaluation of concurrent priority queue algorithms. Technical report
Abstract
The priority queue is a fundamental data structure that is used in a large variety of parallel algorithms, such as multiprocessor scheduling and parallel best-first search of state-space graphs. This thesis addresses the design and experimental evaluation of two novel concurrent priority queues: a parallel Fibonacci heap and a concurrent priority pool, and compares them with the concurrent binary heap. The parallel Fibonacci heap is based on the sequential Fibonacci heap, which is theoretically the most efficient data structure for sequential priority queues. This scheme not only preserves the efficient operation time bounds of its sequential counterpart, but also has very low contention by distributing locks over the entire data structure. The experimental results show its linearly scalable throughput and speedup up to as many processors as tested (currently 18). A concurrent access scheme for a doubly linked list is described as part of the implementation of the parallel Fibonacci heap. The concurrent priority pool is based on the concurrent B-tree and the concurrent pool. The concurrent priority pool has the highest throughput among the priority queues studied. Like the parallel Fibonacci heap, the concurrent priority pool scales linearly up to as many processors as tested. The priority queues aremore »
- Authors:
- Publication Date:
- Research Org.:
- Massachusetts Inst. of Tech., Cambridge, MA (USA). Lab. for Computer Science
- OSTI Identifier:
- 5603266
- Report Number(s):
- AD-A-232288/1/XAB; MIT/LCS/TR-497
CNN: N00014-89-J-1988
- Resource Type:
- Technical Report
- Country of Publication:
- United States
- Language:
- English
- Subject:
- 99 GENERAL AND MISCELLANEOUS//MATHEMATICS, COMPUTING, AND INFORMATION SCIENCE; ARRAY PROCESSORS; TASK SCHEDULING; ALGORITHMS; DATA BASE MANAGEMENT; DATA PROCESSING; EFFICIENCY; OPERATION; PARALLEL PROCESSING; PROGRAMMING; MANAGEMENT; MATHEMATICAL LOGIC; PROCESSING; 990200* - Mathematics & Computers
Citation Formats
Huang, Q. Evaluation of concurrent priority queue algorithms. Technical report. United States: N. p., 1991.
Web.
Huang, Q. Evaluation of concurrent priority queue algorithms. Technical report. United States.
Huang, Q. 1991.
"Evaluation of concurrent priority queue algorithms. Technical report". United States.
@article{osti_5603266,
title = {Evaluation of concurrent priority queue algorithms. Technical report},
author = {Huang, Q},
abstractNote = {The priority queue is a fundamental data structure that is used in a large variety of parallel algorithms, such as multiprocessor scheduling and parallel best-first search of state-space graphs. This thesis addresses the design and experimental evaluation of two novel concurrent priority queues: a parallel Fibonacci heap and a concurrent priority pool, and compares them with the concurrent binary heap. The parallel Fibonacci heap is based on the sequential Fibonacci heap, which is theoretically the most efficient data structure for sequential priority queues. This scheme not only preserves the efficient operation time bounds of its sequential counterpart, but also has very low contention by distributing locks over the entire data structure. The experimental results show its linearly scalable throughput and speedup up to as many processors as tested (currently 18). A concurrent access scheme for a doubly linked list is described as part of the implementation of the parallel Fibonacci heap. The concurrent priority pool is based on the concurrent B-tree and the concurrent pool. The concurrent priority pool has the highest throughput among the priority queues studied. Like the parallel Fibonacci heap, the concurrent priority pool scales linearly up to as many processors as tested. The priority queues are evaluated in terms of throughput and speedup. Some applications of concurrent priority queues such as the vertex cover problem and the single source shortest path problem are tested.},
doi = {},
url = {https://www.osti.gov/biblio/5603266},
journal = {},
number = ,
volume = ,
place = {United States},
year = {Fri Feb 01 00:00:00 EST 1991},
month = {Fri Feb 01 00:00:00 EST 1991}
}