Basic compiler algorithms for parallel programs

22Citations
Citations of this article
19Readers
Mendeley users who have this article in their library.

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. © 1999 ACM.

Cite

CITATION STYLE

APA

Lee, J., Padua, D. A., & Midkiff, S. P. (1999). Basic compiler algorithms for parallel programs. SIGPLAN Notices (ACM Special Interest Group on Programming Languages), 34(8), 1–12. https://doi.org/10.1145/329366.301105

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free