Static Detection of Place Locality and Elimination of Runtime Checks

  • Authors:
  • Shivali Agarwal;Rajkishore Barik;V. Krishna Nandivada;Rudrapatna K. Shyamasundar;Pradeep Varma

  • Affiliations:
  • IBM India Research Lab, New Delhi,;IBM India Research Lab, New Delhi,;IBM India Research Lab, New Delhi,;IBM India Research Lab, New Delhi,;IBM India Research Lab, New Delhi,

  • Venue:
  • APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

Harnessing parallelism particularly for high performance computing is a demanding topic of research. Limitations and complexities of automatic parallelization have led to programming language notations wherein a user programs parallelism explicitly and partitions a global address space for harnessing parallelism. X 10 from IBM uses the notion of places to partition the global address space. The model of computation for such languages involves threads and data distributed over local and remote places. A computation is said to be place local if all the threads and data pertaining to it are at the same place. Analysis and optimizations targeting derivations of place-locality have recently gained ground with the advent of partitioned global address space (PGAS) languages like UPC and X 10, wherein efficiency of place local accesses is performance critical. In this paper, we present a novel framework for statically establishing place locality in X 10. The analysis framework is based on a static abstraction of activities (threads) incorporating places and an extension to classical escape analysis to track the abstract-activities to which an object can escape. Using this framework, we describe an algorithm that eliminates runtime checks that are inserted by the X 10 compiler to enforce place locality of data access. We also identify place locality checks that are guaranteed to fail. Our framework takes advantage of the high level abstraction of X 10 distributions to reason about place locality of array accesses in loops as well. The underlying issues, the framework and its power are illustrated through a series of examples.