Previous-PADALs‎ > ‎


Workshop on Programming Abstractions for Data Locality (PADAL) - Lugano, Switzerland 2014

Programming Abstractions for Data Locality
whitepaper released!

The cost of data movement has become the dominant factor of a high performance computing system both in terms of energy consumption and performance. To minimize data movement, applications have to be optimized both for vertical data movement in the memory hierarchy and horizontal data movement between processing units. While microarchitectural technology trends allow the scaling of the number of cores per chip, cache coherence  will likely not scale to the large number of cores due to the traffic overhead of maintaining coherence. In the future, software-managed memory and incoherent caches or scratchpad memory will be prevalent. Thus, application developers need a set of programming abstractions to describe data locality on the new computing ecosystems.

Architectural trends break our existing programming paradigm because the current software tools optimize for floating point operations not memory traffic. They ignore the incurred cost of communication and simply rely on the hardware cache coherency to virtualize data movement. For example, the current OpenMP-3 usage model describes how to parallelize loop iterations and divides the iteration space evenly among processors with limited flexibility for expressing data layout.  It implicitly assumes all the processing elements are equidistant to each other and equidistant to main memory. This does not reflect the underlying machine architecture. The new programming paradigm should be more data centric and allow to describe how to decompose and how to layout data in the memory.

Fortunately, there are many emerging concepts such as ‘tiling’, ‘array views’ and ‘iterators’ to managing data locality. There is an opportunity to identify commonalities in strategy to enable us to combine together the best of these concepts to develop a comprehensive approach to expressing and managing data locality on exascale programming systems.
These programming model abstractions can expose crucial information about data locality to the compiler and runtime system to enable performance-portable code. The research question is to identify the right level of abstraction, which includes techniques that range from template libraries all the way to language constructs to achieve this goal.

Workshop Charge

The goal of the workshop is to identify common themes and standardize concepts for locality-preserving abstractions for exsacale programming models. We will compile a report contributed by the participants to share our findings with the rest of the HPC community.  

We welcome participation on all aspects of programming model design in the context of HPC, including but not limited to:

  • High-level data structures for data decomposition

  • Topology- and hierarchy-aware language constructs  

  • Language extensions and domain-specific libraries  

  • Mechanisms for dealing with incoherent caches and local storage

  • Directive-based approaches

  • Domain-specific languages (DSL) and embedded DSLs

  • Source-to-source translators and auto-tuners

  • Data locality and memory layout optimizations

  • Programming model implications for hardware design

Important Dates:
   Workshop: April 28-29, 2014

   The workshop will be held at the Swiss National Supercomputing Center in Lugano, Switzerland.

Didem Unat, Lawrence Berkeley National Laboratory
Torsten Hoefler, ETH Zürich
John Shalf, Lawrence Berkeley National Laboratory
Thomas Schulthess, Swiss National Supercomputing Center (CSCS)

Local Organizer:  
Mauro Bianco, Swiss National Supercomputing Center (CSCS)