The Community for Technology Leaders
Proceedings of the 22nd International Conference on Parallel Architectures and Compilation Techniques (1999)
Newport Beach, California
Oct. 12, 1999 to Oct. 16, 1999
ISSN: 1089-795X
ISBN: 0-7695-0425-6
pp: 139
Manish Gupta , IBM T.J. Watson Research Center
Sayak Mukhopadhyay , Mobius Management Systems
Navin Sinha , IBM Global Services India Limited
ABSTRACT
Parallelizing compilers have traditionally focussed mainly on parallelizing loops. This paper presents a new framework for automatically parallelizing recursive procedures that typically appear in divide-and-conquer algorithms. We present compile-time analysis to detect the independence of multiple recursive calls in a procedure. This allows exploitation of a scalable form of nested parallelism, where each parallel task can further spawn off parallel work in subsequent recursive calls.We describe a run-time system which efficiently supports this kind of nested parallelism without unnecessarily blocking tasks. We have implemented this framework in a parallelizing compiler, which is able to automatically parallelize programs like quicksort and mergesort, written in C.For cases where even the advanced symbolic analysis and array section analysis we describe are not able to prove the independence of procedure calls, we propose novel techniques for speculative run-time parallelization, which are more efficient and powerful in this context than analogous techniques proposed previously for speculatively parallelizing loops. Our experimental results on an IBM G30 SMP machine show good speedups obtained by following our approach.
INDEX TERMS
automatic parallelization, recursive procedures, divide and conquer, parallelizing compilers, interprocedural analysis, symbolic analysis
CITATION
Manish Gupta, Sayak Mukhopadhyay, Navin Sinha, "Automatic Parallelization of Recursive Procedures", Proceedings of the 22nd International Conference on Parallel Architectures and Compilation Techniques, vol. 00, no. , pp. 139, 1999, doi:10.1109/PACT.1999.807504
94 ms
(Ver 3.3 (11022016))