Skip to main content
Log in

Dynamic resolution: A runtime technique for the parallelization of modifications to directed acyclic graphs

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

Abstract

Static program analysis limits the performance improvements possible from compile-time parallelization.Dynamic parallelization shifts a portion of the analysis from compile-time to runtime, thereby enabling optimizations whose static detection is overly expensive or impossible.Dynamic resolution is a dynamic-parallelization technique for finding loop and nonloop parallelism in imperative, sequential programs that destructively manipulate dynamic directed acyclic graphs (DAGs). Dynamic resolution uses runtime reference counts on heap data, a runtime linearization of threads, and a simple static analysis to dynamically detect potential heap aliases and to correctly coordinate parallel access to shared structures. We describe dynamic resolution in the context of two imperative procedures: DAG rewrite and destructive quicksort. The description is couched in the pointer-safe language ML; with some programmer assertions and custom macros for pointer and memory manipulation, dynamic resolution is applicable to pointer-unsafe languages (C extended with threads) as well. Furthermore, with programmer identification of cyclic structure, dynamic resolution can be used to find parallelism in programs that manipulate cyclic structures. Shared-memory implementations of dynamic resolution for ML and C have attained parallel speedup for nontrivial sequential procedures such as destructive quicksort; empirical speedup results obtained on fast contemporary machines are given.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. W. L. Harrison and D. A. Padua, PARCEL: Project for the Automatic Restructuring and Concurrent Evaluation of Lisp,Int’l. Conf. Supercomputing, pp. 527–538 (July 1988).

  2. J. R. Larus, Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors, Ph.D. Thesis, University of California, Berkeley, Computer Science Division (May 1989).

  3. L. Huelsbergen, Dynamic Language Parallelization, Ph.D. Thesis, University of Wisconsin-Madison (August 1993).

  4. L. Huelsbergen and J. R. Larus, Dynamic Program Parallelization. Association for Computing Machinery.Proc. Conf. Lisp and Functional Progr., pp. 311–323 (June 1992).

  5. R. Milner, A Theory of Type Polymorphism in Programming,J. Comput. Syst. Sci. 17:348–375 (1978).

    Article  MATH  MathSciNet  Google Scholar 

  6. B. W. Kernighan and D. M. Ritchie,The C Programming Language, Prentice-Hall, Second Edition (1988).

  7. A. Deutsch, Interprocedural May-Alias Analysis for Pointers: Beyondk-limiting,Conf. Progr. Lang. Design and Implementation, Association for Computing Machinery, pp. 230–241 (June 1994).

  8. J. Hummel, L. J. Hendren, and A. Nicolau, A General Data Dependence Test for Dynamic, Pointer-Based Data Structures. Association for Computing Machinery,Conf. Progr. Lang. Design and Implementation, pp. 218–229 (June 1994).

  9. L. J. Hendren and A. Nicolau, Parallelizing Programs with Recursive Data Structures,IEEE Trans. Parallel Distrib. Syst. 1(1):35–47 (January 1990).

    Article  Google Scholar 

  10. W. E. Weihl, Interprocedural Data Flow Analysis in the Presence of Pointers, Procedure Variables, and Label Variables. Association for Computing Machinery,Symp. Principles Progr. Lang. pp. 83–94 (January 1980).

  11. N. D. Jones and S. S. Muchnick, Flow Analysis and Optimization of Lisp-Like Structures. Association for Computing Machinery,Symp. Principles of Progr. Lang., pp. 244–225 (January 1979).

  12. C. A. R. Hoare, Quicksort,Computer Journal 5(1):xx-xx (1962).

    Article  MathSciNet  Google Scholar 

  13. A. W. Appel and D. B. MacQueen, A Standard ML Compiler,Functional Programming Languages and Computer Architecture 274:301–324 (1987).

    Google Scholar 

  14. D. R. Chase, M. Wegman, and F. K. Zadeck, Analysis of Pointers and Structures. Association for Computing Machinery,Conf. Progr. Lang. Design and Implementation, pp. 296–310 (June 1990).

  15. J. R. Larus and P. N. Hilfinger, Detecting Conflicts Between Structure Accesses. Association for Computing Machinery,Conf. Progr. Lang. Design and Implementation, pp. 21–34 (June 1988).

  16. S. Horwitz, P. Pfeiffer, and T. Reps. Dependence Analysis for Pointer Variables,Conf. Progr. Lang. Design and Implementation. Association for Computing Machinery (June 1989).

  17. J. Hummel, L. J. Hendren, and A. Nicolau, Abstract Description of Pointer Data Structures: An Approach for Improving the Analysis and Optimization of Imperative Programs,ACM Lett. Progr. Lang. and Syst. 1(3):243–260 (September 1992).

    Article  Google Scholar 

  18. R. Milner, M. Tofte, and R. Harper,The Definition of Standard ML. MIT Press (1990).

  19. J. M. Lucassen and D. K. Gifford, Polymorphic Effect Systems. Association for Computing Machinary,Symp. Principles Progr. Lang., pp. 47–57 (January 1988).

  20. A. J. Field and P. G. Harrison,Functional Programming, Addison-Wesley (1988).

  21. S. P. Jones,The Implementation of Functional Programming Languages, Prentice Hall (1987).

  22. A. W. Appel,Compiling with Continuations, Cambridge University Press (1992).

  23. R. R. Fenichel and J. C. Yochelson, A Lisp Garbage-Collector for Virtual Memory Computer Systems,Comm. ACM 12(11):611–612 (November 1969).

    Article  MATH  Google Scholar 

  24. L. Huelsbergen, Dynamic Parallelization of Modifications to Directed Acyclic Graphs,Proc. Conf. Parallel Architectures and Compilation Techniques, pp. 186–197 (October 1996).

  25. L. J. Hendren, Parallelizing Programs with Recursive Data Structures, Ph.D. Thesis, Cornell University (August 1990).

  26. E. Mohr, D. Kranz, and R. H. Halstead, Jr., Lazy Task Creation: A Technique for Increasing the Granularity of Parallel Programs. Association for Computing Machinery,Proc. Conf. on Lisp and Functional Progr., pp. 185–197 (June 1990).

  27. M. T. Vandevoorde and E. S. Roberts, WorkCrews: An Abstraction for Controlling Parallelism.IJPP 17(4):347–366 (1988).

    Google Scholar 

  28. P. Tinker and M. Katz, Parallel Execution of Sequential Scheme with ParaTran,Proc. Conf. on Lisp and Functional Progr., pp. 28–39 (July 1988).

  29. M. Katz, ParaTran: A Transparent, Transaction Based Runtime Mechanism for Parallel Execution of Scheme. Technical Report LCS/TR-454, MIT (July 1989).

  30. L. Lu, Loop Transformations for Massive Parallelism, Ph.D. Thesis, Yale University (November 1992).

  31. L. Lu and M. C. Chen, Parallelizing Loops with Indirect Array References or Pointers,Preliminary Proc. 4th Workshop on Languages and Compilers for Parallel Computing (August 1991).

  32. W. L. Harrison, The Interprocedural Analysis and Automatic Parallelization of Scheme Programs,Lisp- and Symbolic Computation 2(3/4):179–396 (October 1989).

    Article  Google Scholar 

  33. P. E. Pfeiffer, Dependence-Based Representations for Programs with Reference Variables, P.D. Thesis, University of Wisconsin-Madison (1991).

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Huelsbergen, L. Dynamic resolution: A runtime technique for the parallelization of modifications to directed acyclic graphs. Int J Parallel Prog 25, 385–417 (1997). https://doi.org/10.1007/BF02699884

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF02699884

Key words

Navigation