Automatic Parallelization of Recursive Procedures

  • Authors:
  • Manish Gupta;Sayak Mukhopadhyay;Navin Sinha

  • Affiliations:
  • IBM T. J. Watson Research Center, Yorktown Heights, New York 10598. mgupta@us.ibm.com;Mobius Management Systems, Rye, New York 10580. smukhopa@mobius.com;IBM Global Services India, Bangalore 560017, India. r1navink@in.ibm.com

  • Venue:
  • International Journal of Parallel Programming
  • Year:
  • 2000

Quantified Score

Hi-index 0.00

Visualization

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, using powerful, symbolic array section 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 runtime 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 compile-time analysis we describe is not able to prove the independence of procedure calls, we propose novel techniques for speculative runtime 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.