Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/301104.301105acmconferencesArticle/Chapter ViewAbstractPublication PagesppoppConference Proceedingsconference-collections
Article
Free access

Basic compiler algorithms for parallel programs

Published: 01 May 1999 Publication History

Abstract

Traditional compiler techniques developed for sequential programs do not guarantee the correctness (sequential consistency) of compiler transformations when applied to parallel programs. This is because traditional compilers for sequential programs do not account for the updates to a shared variable by different threads. We present a concurrent static single assignment (CSSA) form for parallel programs containing cobegin/coend and parallel do constructs and post/wait synchronization primitives. Based on the CSSA form, we present copy propagation and dead code elimination techniques. Also, a global value numbering technique that detects equivalent variables in parallel programs is presented. By using global value numbering and the CSSA form, we extend classical common subexpression elimination, redundant load/store elimination, and loop invariant detection to parallel programs without violating sequential consistency. These optimization techniques are the most commonly used techniques for sequential programs. By extending these techniques to parallel programs, we can guarantee the correctness of the optimized program and maintain single processor performance in a multiprocessor environment.

References

[1]
Alfred V. Aho, Ravi Sethi, and Jeffrey D. UUman. Compilers: Principles, Techniques, and Tools. Addison Wesley, 1986.
[2]
Bowen Alpern, Mark N. Wegman, and F. Kenneth Zadeck. Detecting equality of variables in programs. In Conference Record of the Fifteenth A CM Symposium on Principles of Programming Languages, pages 1-11, January 1988.
[3]
Andrew W. Appel. Modern Compiler Implementation in Java. Cambridge University Press, New York, 1998.
[4]
David Callahan, Ken Kennedy, and Jaspal Subhlok. Analysis of event synchronization in a parallel programming tool. in Proceedings of the #nd A CM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPOPP), pages 21-30, March 1990.
[5]
Jong-Deok Choi and Sang Lyul Min. Race frontier: Reproducing data races in parallel-program debugging. In Proceedings of the 3rd A CM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPOPP), pages 145-154, April 1991.
[6]
Keith Cooper and Taylor Simpson. SCC-based value numbering. Technical Report CRPC-TR95636-S, Center for Research on Parallel Computation, Rice University, October 1995.
[7]
Ron Cytron, Jeanne Ferrante, Barry K. Rosen, and Mark N. Wegman. Efficiently computing static single assignment form and the control dependence graph. A CM Transactions on Programming Languages and Systems, 13(4):451-490, October 1991.
[8]
Perry A. Emrath, Sanjoy Ghosh, and David A. Padua. Event synchronization analysis for debugging parallel programs. In Proceedings of Supercomputing '89, pages 580-588, 1989.
[9]
Perry A. Emrath, Sanjoy Ghosh, and David A. Padua. Detecting nondeterminacy in parallel programs. IEEE Software, pages 69-77, January 1992.
[10]
Jeanne Ferrante, Karl J. Ottenstein, and Joe D. Warren. The program dependence graph and its use in optimization. A CM Transactions on Programming Languages and Systems, 9(3):319-349, July 1987.
[11]
The Parallel Computing Forum. PCF parallel fortran extensions. Fortran Forum, 10(3), September 1991.
[12]
Mark D. Hill. Multiprocessors should support simple memory-consistency models. IEEE Computer, pages 28-34, August 1998.
[13]
Jens Knoop. Eliminating partially dead code in explicitly parallel programs. Theoretical Computer Science, 196(1-2):365-393, April 1998.
[14]
Jens Knoop, Bernhard Steffen, and Jiirgen Vollmer. Parallelism for free: Efficient and optimal bitvector analysis for parallel programs. ACM Transactions on Programming Languages and Systems, 18(3):268-299, May 1996.
[15]
Arvind Krishnamurthy and Katherine Yelick. Optimizing parallel SPMD programs. In Seventh Annual Workshop on Languages and Compilers for Parallel Computing, August 1994.
[16]
Arvind Krishnamurthy and Katherine Yelick. Optimizing parallel programs with explicit synchronization. In Proceedings of the A CM SIGPLAN 1995 Conference on Programming Language Design and Implementation (PLDI), pages 196-204, June 1995.
[17]
Arvind Krishnamurthy and Katherine Yelick. Analyses and optimizations for shared address space programs. Journal of Parallel and Distributed Computing, 38:139- 144, 1996.
[18]
Leslie Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Transactions on Computers, C-28(9):690-691, September 1979.
[19]
Jaejin Lee. Compilation Techniques for Parallel Shared Memory Programs. PhD thesis, University of Illinois at Urbana-Champaign, 1999. In preparation.
[20]
Jaejin Lee, Samuel P. Midkiff, and David A. Padua. Concurrent static single assignment form and concurrent sparse conditional constant propagation for explicitly parallel programs. Technical Report TR#1525, CSRD, University of Illinois at Urbana-Champaign, July 1997.
[21]
Jaejin Lee, Samuel P. Midkiff, and David A. Padua. Concurrent static single assignment form and constant propagation for explicitly parallel programs. In Proceedings of The l Oth International Workshop on Languages and Compilers for Parallel Computing, number 1366 in Lecture Notes in Computer Science, pages 114-130. Springer, August 1997.
[22]
Jaejin Lee, Samuel P. Midkiff, and David A. Padua. A constant propagation algorithm for explicitly parallel programs. International Journal of Parallel Programming, 26(5):563-589, 1998.
[23]
Samuel. P. Midkiff and David. A. Padua. Issues in the optimization of parallel programs. In Proceedings of the 1990 International Conference on Parallel Processing (ICPP), Vol. II Software, pages 105-113, August 1990.
[24]
Samuel P. Midkiff, David A. Padua, and Ron Cytron. Compiling programs with user parallelism. In Languages and Compilers for Parallel Computing, pages 402--422, 1990.
[25]
Steven S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997.
[26]
Vivek Sarkar. Analysis and optimization of explicitly parallel programs using the parallel program graph representation. In The Tenth Annual Workshop on Languages and Compilers for Parallel Computing, number 1366 in Lecture Notes in Computer Science, pages 94- 113. Springer, August 1997.
[27]
Vivek Sarkar and Barbara Simons. Parallel program graphs and their classification. In The Sixth Annual Workshop on Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science. Springer-Verlag, August 1993.
[28]
Dennis Shasha and Marc Snir. Efficient and correct execution of parallel programs that share memory. ACM 2~ansactions on Programming Languages and Systems, 10(2):282-312, April 1988.
[29]
Loren Taylor Simpson. Value-Driven Redundancy Elimination. Phi) thesis, Department of Electrical and Computer Engineering, Rice University, April 1996.
[30]
Harini Srinivasan. Optimizing explicitly parallel programs. Master's thesis, Department of Computer Science and Engineering, Oregon Graduate Institute of Science and Technology, July 1994.
[31]
Harini Srinivasan and Dirk Grunwald. An efficient construction of parallel static single assignment form for structured parallel programs. Technical Report CU-CS- 564-91, University of Colorado at Boulder, December 1991.
[32]
I-iarini Srinivasan, James Hook, and Michael Wolfe. Static single assignment for explicitly parallel programs. In Proceedings of the $Oth A CM Symposium on Principles of Programming Languages (POPL), pages 260- 272, January 1993.
[33]
Mark N. Wegman and F. Kenneth Zadeck. Constant propagation with conditional branches. A CM Transactions on Programming Languages and Systems, 13(2):181-210, April 1991.
[34]
Michael Wolfe and Harini Srinivasan. Data structures for optimizing programs with explicit parallelism. In Proceeedings of the First International Conference of the Austrian Center for Parallel Computation, September 1991.

Cited By

View all
  • (2023)Verifying Exception-Handling Code in Concurrent Libraries2023 30th Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC60848.2023.00051(405-414)Online publication date: 4-Dec-2023
  • (2021)Synthesizing Multi-threaded Tests from Sequential Traces to Detect Communication Deadlocks2021 14th IEEE Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST49551.2021.00013(1-12)Online publication date: Apr-2021
  • (2018)ILA-MCM: Integrating Memory Consistency Models with Instruction-Level Abstractions for Heterogeneous System-on-Chip Verification2018 Formal Methods in Computer Aided Design (FMCAD)10.23919/FMCAD.2018.8603015(1-10)Online publication date: Oct-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PPoPP '99: Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
May 1999
192 pages
ISBN:1581131003
DOI:10.1145/301104
  • Chairmen:
  • Marc Snir,
  • Andrew A. Chien
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 May 1999

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

PPoPP99
Sponsor:

Acceptance Rates

PPoPP '99 Paper Acceptance Rate 17 of 79 submissions, 22%;
Overall Acceptance Rate 230 of 1,014 submissions, 23%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)241
  • Downloads (Last 6 weeks)32
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Verifying Exception-Handling Code in Concurrent Libraries2023 30th Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC60848.2023.00051(405-414)Online publication date: 4-Dec-2023
  • (2021)Synthesizing Multi-threaded Tests from Sequential Traces to Detect Communication Deadlocks2021 14th IEEE Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST49551.2021.00013(1-12)Online publication date: Apr-2021
  • (2018)ILA-MCM: Integrating Memory Consistency Models with Instruction-Level Abstractions for Heterogeneous System-on-Chip Verification2018 Formal Methods in Computer Aided Design (FMCAD)10.23919/FMCAD.2018.8603015(1-10)Online publication date: Oct-2018
  • (2016)A distributed OpenCL framework using redundant computation and data replicationACM SIGPLAN Notices10.1145/2980983.290809451:6(553-569)Online publication date: 2-Jun-2016
  • (2016)A distributed OpenCL framework using redundant computation and data replicationProceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/2908080.2908094(553-569)Online publication date: 2-Jun-2016
  • (2014)Minimizing lifetime of sensitive data in concurrent programsProceedings of the 4th ACM conference on Data and application security and privacy10.1145/2557547.2557589(171-174)Online publication date: 3-Mar-2014
  • (2013)Online feedback-directed optimizations for parallel Java codeACM SIGPLAN Notices10.1145/2544173.250951848:10(713-728)Online publication date: 29-Oct-2013
  • (2013)Online feedback-directed optimizations for parallel Java codeProceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications10.1145/2509136.2509518(713-728)Online publication date: 29-Oct-2013
  • (2013)Experiences Developing the OpenUH Compiler and Runtime InfrastructureInternational Journal of Parallel Programming10.1007/s10766-012-0230-941:6(825-854)Online publication date: 1-Dec-2013
  • (2012)Automatic Parallelization: An Overview of Fundamental Compiler TechniquesSynthesis Lectures on Computer Architecture10.2200/S00340ED1V01Y201201CAC0197:1(1-169)Online publication date: 28-Jan-2012
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media