Abstract

We have developed compiler optimization techniques for explicit parallel programs using the OpenMP API. To enable optimization across threads, we designed dataflow analysis techniques in which interactions between threads are effectively modeled. Structured description of parallelism and relaxed memory consistency in OpenMP make the analyses effective and efficient. We developed algorithms for reaching definitions analysis, memory synchronization analysis, and cross-loop data dependence analysis for parallel loops. Our primary target is compiler-directed software distributed shared memory systems in which aggressive compiler optimizations for software-implemented coherence schemes are crucial to obtaining good performance. We also developed optimizations applicable to general OpenMP implementations, namely redundant barrier removal and privatization of dynamically allocated objects. Experimental results for the coherency optimization show that aggressive compiler optimizations are quite effective for a shared-write intensive program because the coherence-induced communication volume in such a program is much larger than that in shared-read intensive programs.

Highlights

  • The OpenMP API is an emerging standard for shared-memory parallel programming

  • We describe analysis algorithms called reaching definition analysis, memory synchronization analysis, and cross-loop data dependence analysis for parallel loops to obtain dataflow information for our optimizations

  • While these techniques are applicable to any OpenMP implementation, our primary target is a compiler-directed software distributed shared memory (DSM) system [20]

Read more

Summary

Introduction

The OpenMP API is an emerging standard for shared-memory parallel programming. It provides a simple and incremental way to write parallel programs, for data-parallel applications. We developed optimization techniques to reduce the synchronization and coherence overheads and to improve data locality While these techniques are applicable to any OpenMP implementation, our primary target is a compiler-directed software distributed shared memory (DSM) system [20]. This system provides a shared memory image on top of distributed memory parallel computers with the assistance of a compiler that analyzes communication patterns and optimizes coherence control codes. In such a system, aggressive compiler optimizations are crucial to obtaining good performance because a software-implemented coherence scheme has larger coherence overhead than symmetric multi-processors (SMPs) and hardware DSMs. We obtained preliminary performance results using a prototype system.

Motivation
Parallel dataflow analysis
Internal representation
Reaching definitions analysis
Memory synchronization analysis
Cross-loop data dependence analysis for parallel loops
System overview
Coherence optimization
Redundant barrier removal
Privatization of dynamically allocated objects
Performance evaluation
Related work
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call