A technique for the effective and automatic reuse of classical compiler optimizations on multithreaded code

  • Authors:
  • Pramod G. Joisha;Robert S. Schreiber;Prithviraj Banerjee;Hans J. Boehm;Dhruva R. Chakrabarti

  • Affiliations:
  • Hewlett-Packard, Palo Alto, CA, USA;Hewlett-Packard, Palo Alto, CA, USA;Hewlett-Packard, Palo Alto, CA, USA;Hewlett-Packard, Palo Alto, CA, USA;Hewlett-Packard, Palo Alto, CA, USA

  • Venue:
  • Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

A large body of data-flow analyses exists for analyzing and optimizing sequential code. Unfortunately, much of it cannot be directly applied on parallel code, for reasons of correctness. This paper presents a technique to automatically, aggressively, yet safely apply sequentially-sound data-flow transformations, without change, on shared-memory programs. The technique is founded on the notion of program references being "siloed" on certain control-flow paths. Intuitively, siloed references are free of interference from other threads within the confines of such paths. Data-flow transformations can, in general, be unblocked on siloed references. The solution has been implemented in a widely used compiler. Results on benchmarks from SPLASH-2 show that performance improvements of up to 41% are possible, with an average improvement of 6% across all the tested programs over all thread counts.