Skip to main content

Speculative Parallelization of Loops

  • Reference work entry
Encyclopedia of Parallel Computing

Synonyms

Optimistic loop parallelization; Parallelization; Speculative Parallelization; Speculative Run-Time Parallelization; Thread-level data speculation(TLDS); TLS

Definition

Speculative loop (thread) level parallelization is a compiler run-time technique that executes optimistically parallelized loops, verifies the correctness of their execution and, when necessary, backtracks to a safe state for possible re-execution. This technique includes a compiler (static) component for the transformation of the loop for speculative parallel execution as well as a run-time component which verifies correctness and re-executes when necessary.

Discussion

Introduction

The correctness of optimizing program transformations, such as loop parallelization, relies on compiler or programmer analysis of the code. Compiler-performed analysis is preferred because it is more productive and is not subject to human error. However, it usually involves a very complex symbolic analysis which often fails to...

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 1,600.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 1,799.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Bibliography

  1. Banerjee U (1988) Dependence analysis for supercomputing. Kluwer, Boston

    Google Scholar 

  2. Burke M, Cytron R, Ferrante J, Hsieh W (1989) Automatic generation of nested, fork-join parallelism. J Supercomput 2:71–88

    Google Scholar 

  3. Chen MK, Olukotun K (1998) Exploiting method level parallelism in single threaded java programs. In: International conference on parallel architectures and compilation techniques PACT’98, IEEE, Paris, pp 176–184

    Google Scholar 

  4. Cintra M, Llanos DR (2003) Toward efficient and robust software speculative parallelization on multiprocessors. In: International conference on principle and practice of parallel computing PPoPP’03, ACM, San Diego, pp 13–24

    Google Scholar 

  5. Collard J-F (1994) Space-time transformation of while-loops using speculative execution. In: Scalable high performance computing conference, IEEE, Knoxville, pp 429–436

    Google Scholar 

  6. Dang F, Yu H, Rauchwerger L (2002) The R-LRPD test: speculative parallelization of partially parallel loops. In: International parallel and distributed processing symposium, Florida

    Google Scholar 

  7. Eigenmann R, Hoeflinger J, Li Z, Padua D (1991) Experience in the automatic parallelization of four perfect-benchmark programs. Lecture notes in computer science 589. Proceedings of the fourth workshop on languages and compilers for parallel computing, Santa Clara, pp 65–83

    Google Scholar 

  8. Hammond L, Willey M, Olukotun K (1998) Data speculation support for a chip multiprocessor. In: 8th international conference on architectural support for programming languages and operating systems, San Jose, pp 58–69

    Google Scholar 

  9. Herlihy M, Shavit N (1995) The art of multiprocessor programming. Morgan Kaufmann, London

    Google Scholar 

  10. Jefferson DR (1985) Virtual time. ACM Trans Program Lang Syst 7(3):404–425

    MathSciNet  Google Scholar 

  11. Kazi IH, Lilja DJ (2001) Coarsed-grained thread pipelining: a speculative parallel execution model for shared-memory multiprocessors. IEEE Trans Parallel Distrib Syst 12(9):952

    Google Scholar 

  12. Kruskal C (1986) Efficient parallel algorithms for graph problems. In: Proceedings of the 1986 international conference on parallel processing, University Park, pp 869–876, Aug 1986

    Google Scholar 

  13. Kuck DJ, Kuhn RH, Padua DA, Leasure B, Wolfe M (1981) Dependence graphs and compiler optimizations. In: Proceedings of the 8th ACM symposium on principles of programming languages, Williamsburg, pp 207–218

    Google Scholar 

  14. Kulkarni M, Pingali K, Walter B, Ramanarayanan G, Bala K, Paul Chew L (2007) Optimistic parallelism requires abstractions. In: Proceedings of the 2007 ACM SIGPLAN conference on programming language design and implementa-tion, PLDI ’07, ACM, New York, pp 211–222

    Google Scholar 

  15. Thomson Leighton F (1992) Introduction to parallel algorithms and architectures: arrays, trees, hypercubes. Morgan Kaufmann, London

    MATH  Google Scholar 

  16. Li Z (1992) Array privatization for parallel execution of loops. In: Proceedings of the 19th international symposium on computer architecture, Gold Coast, pp 313–322

    Google Scholar 

  17. Maydan DE, Amarasinghe SP, Lam MS (1992) Data dependence and data-flow analysis of arrays. In: Proceedings 5th workshop on programming languages and compilers for parallel computing, New Haven

    Google Scholar 

  18. Oancea CE, Mycroft A, Harris T (2009) A lightweight in-place implementation for software thread-level speculation. In: International symposium on parallelism in algorithms and architectures SPAA’09, ACM, Calgary, pp 223–232

    Google Scholar 

  19. Padua DA, Wolfe MJ (1986) Advanced compiler optimizations for supercomputers. Commun ACM 29:1184–1201

    Google Scholar 

  20. Papadimitriou S, Mowry TC (2001) Exploring thread-level speculation in software: the effects of memory access tracking granularity. Technical report, CMU

    Google Scholar 

  21. Patel D, Rauchwerger L (1999) Implementation issues of loop-level speculative run-time parallelization. In: Proceedings of the 8th international conference on compiler construction (CC’99), Amsterdam. Lecture notes in computer science, vol 1575. Springer, Berlin

    Google Scholar 

  22. Rauchwerger L (1998) Run-time parallelization: its time has come. Parallel Comput 24(3–4):527. Special issues on languages and compilers for parallel comput

    MATH  Google Scholar 

  23. Rauchwerger L, Amato N, Padua D (1995) Run–time methods for parallelizing partially parallel loops. In: Proceedings of the 9th ACM international conference on supercomputing, Barcelona, Spain, pp 137–146

    Google Scholar 

  24. Rauchwerger L, Amato N, Padua D (1995) A scalable method for run-time loop parallelization. Int J Parallel Prog 26(6): 537–576

    Google Scholar 

  25. Rauchwerger L, Padua DA (1999) The LRPD test: speculative run-time parallelization of loops with privatization and reduction parallelization. IEEE Trans Parallel and Distrib Syst 10(2):160–180

    Google Scholar 

  26. Rauchwerger L, Padua DA (1995). Parallelizing WHILE loops for multi-processor systems. In: Proceedings of 9th international parallel processing symposium, Santa Barbara

    Google Scholar 

  27. Rauchwerger L, Padua DA (1995) The LRPD test: speculative run-time parallelization of loops with privatization and reduction parallelization. In: Proceedings of the SIGPLAN 1995 conference on programming language design and implementation, La Jolla pp 218–232

    Google Scholar 

  28. Rundberg P, Stenstrom P (2000) Low-cost thread-level data dependence speculation on multiprocessors. In: 4th workshop on multithreaded execution, architecture and compilation, Monterey

    Google Scholar 

  29. Rus S, Pennings M, Rauchwerger L (2007) Sensitivity analysis for automatic parallelization on multi-cores. In: Proceedings of the ACM international conference on supercomputing (ICS07), Seattle

    Google Scholar 

  30. Rus S, Hoeflinger J, Rauchwerger L (2003) Hybrid analysis: static & dynamic memory reference analysis. Int J Parallel Prog 31(3):251–283

    MATH  Google Scholar 

  31. Saltz J, Mirchandaney R (1991) The preprocessed doacross loop. In: Schwetman HD (ed) Proceedings of the 1991 international conference on parallel processing, Software, vol II. CRC Press, Boca Raton, pp 174–178

    Google Scholar 

  32. Saltz J, Mirchandaney R, Crowley K (1989) The doconsider loop. In: Proceedings of the 1989 international conference on supercomputing, Irakleion, pp 29–40

    Google Scholar 

  33. Saltz J, Mirchandaney R, Crowley K (1991) Run-time parallelization and scheduling of loops. IEEE Trans Comput 40(5):603–612

    Google Scholar 

  34. Schonberg E (1989) On-the-fly detection of access anomalies. In: Proceedings of the SIGPLAN 1989 conference on programming language design and implementation, Portland, pp 285–297

    Google Scholar 

  35. Shavit N, Touitou D (1995) Software transactional memory. In: Proceedings of the fourteenth annual ACM symposium on principles of distributed computing, PODC ’95, ACM, New York, pp 204–213

    Google Scholar 

  36. Sohi GS, Breach SE, Vijayakumar TN (1995) Multiscalar processors. In: 22nd international symposium on computer architecture, Santa Margherita

    Google Scholar 

  37. Steffan JG, Mowry TC (1998) The potential for using thread-level data speculation to facilitate automatic parallelization. In: Proceedings of the 4th international symposium on high-performance computer architecture, Las Vegas

    Google Scholar 

  38. Tu P, Padua D (1992) Array privatization for shared and distributed memory machines. In: Proceedings 2nd workshop on languages, compilers, and run-time environments for distributed memory machines, Boulder

    Google Scholar 

  39. Tu P, Padua D (1993) Automatic array privatization. In: Proceedings 6th annual workshop on languages and compilers for parallel computing, Portland

    Google Scholar 

  40. Tu P, Padua D (1995) Efficient building and placing of gating functions. In: Proceedings of the SIGPLAN 1995 conference on programming language design and implementation, La Jolla, pp 47–55

    Google Scholar 

  41. Welc A, Jagannathan S, Hosking A (2006) Safe futures for Java. In: International conference object-oriented programming, systems, languages and applications OOP-SLA’06, ACM, New York, pp 439–453

    Google Scholar 

  42. Wolfe M (1989) Optimizing compilers for supercomputers. MIT Press, Boston

    Google Scholar 

  43. Wolfe M (1992) Doany: not just another parallel loop. In: Proceedings 5th annual workshop on programming languages and compilers for parallel computing, New Haven. Lecture notes in computer science, vol 757. Springer, Berlin

    Google Scholar 

  44. Yu H, Rauchwerger L (2000) Run-time parallelization overhead reduction techniques. In: Proceedings of the 9th international conference on compiler construction (CC 2000), Berlin Germany. Lecture notes in computer science vol 1781. Springer, Heidelberg

    Google Scholar 

  45. Zhang Y, Rauchwerger L, Torrellas J (1998) Hardware for speculative run-time parallelization in distributed shared-memory multiprocessors. In: Proceedings of the 4th international symposium on high-performance computer architecture (HPCA), Las Vegas, pp 162–174

    Google Scholar 

  46. Zhu C, Yew PC (1987) A scheme to enforce data dependence on large multiprocessor systems. IEEE Trans Softw Eng 13(6): 726–739

    MATH  Google Scholar 

  47. Zilles C, Sohi G (2002) Master/slave speculative parallelization. In: International symposium on microarchitecture Micro-35, IEEE, Los Alamitos, pp 85–96

    Google Scholar 

  48. Zima H (1991) Supercompilers for parallel and vector computers. ACM Press, New York

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer Science+Business Media, LLC

About this entry

Cite this entry

Rauchwerger, L. (2011). Speculative Parallelization of Loops. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_35

Download citation

Publish with us

Policies and ethics