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...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Bibliography
Banerjee U (1988) Dependence analysis for supercomputing. Kluwer, Boston
Burke M, Cytron R, Ferrante J, Hsieh W (1989) Automatic generation of nested, fork-join parallelism. J Supercomput 2:71–88
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
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
Collard J-F (1994) Space-time transformation of while-loops using speculative execution. In: Scalable high performance computing conference, IEEE, Knoxville, pp 429–436
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
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
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
Herlihy M, Shavit N (1995) The art of multiprocessor programming. Morgan Kaufmann, London
Jefferson DR (1985) Virtual time. ACM Trans Program Lang Syst 7(3):404–425
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
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
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
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
Thomson Leighton F (1992) Introduction to parallel algorithms and architectures: arrays, trees, hypercubes. Morgan Kaufmann, London
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
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
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
Padua DA, Wolfe MJ (1986) Advanced compiler optimizations for supercomputers. Commun ACM 29:1184–1201
Papadimitriou S, Mowry TC (2001) Exploring thread-level speculation in software: the effects of memory access tracking granularity. Technical report, CMU
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
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
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
Rauchwerger L, Amato N, Padua D (1995) A scalable method for run-time loop parallelization. Int J Parallel Prog 26(6): 537–576
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
Rauchwerger L, Padua DA (1995). Parallelizing WHILE loops for multi-processor systems. In: Proceedings of 9th international parallel processing symposium, Santa Barbara
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
Rundberg P, Stenstrom P (2000) Low-cost thread-level data dependence speculation on multiprocessors. In: 4th workshop on multithreaded execution, architecture and compilation, Monterey
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
Rus S, Hoeflinger J, Rauchwerger L (2003) Hybrid analysis: static & dynamic memory reference analysis. Int J Parallel Prog 31(3):251–283
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
Saltz J, Mirchandaney R, Crowley K (1989) The doconsider loop. In: Proceedings of the 1989 international conference on supercomputing, Irakleion, pp 29–40
Saltz J, Mirchandaney R, Crowley K (1991) Run-time parallelization and scheduling of loops. IEEE Trans Comput 40(5):603–612
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
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
Sohi GS, Breach SE, Vijayakumar TN (1995) Multiscalar processors. In: 22nd international symposium on computer architecture, Santa Margherita
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
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
Tu P, Padua D (1993) Automatic array privatization. In: Proceedings 6th annual workshop on languages and compilers for parallel computing, Portland
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
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
Wolfe M (1989) Optimizing compilers for supercomputers. MIT Press, Boston
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
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
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
Zhu C, Yew PC (1987) A scheme to enforce data dependence on large multiprocessor systems. IEEE Trans Softw Eng 13(6): 726–739
Zilles C, Sohi G (2002) Master/slave speculative parallelization. In: International symposium on microarchitecture Micro-35, IEEE, Los Alamitos, pp 85–96
Zima H (1991) Supercompilers for parallel and vector computers. ACM Press, New York
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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
DOI: https://doi.org/10.1007/978-0-387-09766-4_35
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering