Chapter 8
Conclusion
The Programming Abstractions for Data Locality (PADAL) Workshop is intent on establishing the identity
for a community of researchers who are bound together by the notion that data locality comes first as the
primary organizing principle for computation. This paradigm shift from compute-centric towards data-centric
specification of algorithms has upended assumptions that underpin our current programming environments.
Parallelism is inextricably linked to data locality, and current programming abstractions are centered on
abstractions for compute (threads, processes, parallel do-loops). The PADAL workshop gives voice to the
groundswell of activity to explore abstractions for expressing parallelism in terms of data locality. The time
has arrived to embrace data locality as being the anchor for computation. PADAL has identified a community
that is actively exploring a wide-open field of new approaches to describing computation and parallelism in
a way that conserves data movement. A number of these projects have produced working technologies that
are rapidly approaching maturity During this early phase of development, it is crucial to establish research
collaborations that leverage for commonalities and opportunities for inter-operation between these emerging
technologies.
8.1
Priorities
The highest priorities moving forward are to;
• Define data-centric approaches to computation as a community.
• Foster development of an identity through continued workshops and interactions.
• Define a common research agenda that cuts across the different research areas in libraries, compil-
ers/languages, runtime/task models, and system-scale implementations of data-locality centric pro-
gramming systems.
Much research in this area (as with all emerging fields of research) has focused on rapidly producing
implementations to demonstrate the value of data-centric programming paradigms. In order to get to the
next level of impact, there is a benefit to formalizing the abstractions for representing data layout patterns
and the mapping of computation to the data where it resides. It is our desire to create standards that
promote interoperability between related programming systems and cooperation to ensure all technology
implementations offer the most complete set of features possible for a fully functional programming envi-
ronment. The only way to achieve these goals is for this community to organize, consider our impact on
the design of the software stack at all levels, and work together towards the goal of creating interoperable
solutions that contribute to a comprehensive environment.
8.2
Research Areas
The following key research areas are outlined in this report.
42
8.3. NEXT STEPS
Data structures and layout abstractions to express and manage data layout : These are the over-
arching data layout abstractions that provide a compact description of data layout patterns. These
patterns can be embedded in libraries and data structures for library-based building blocks for appli-
cations, and also form a baseline for higher-level language and compiler support.
Language and compiler support for data locality: Compiler and language support for those abstrac-
tions take best practices from library approaches and elevate them into language constructs benefit
from broad community adoption of the overarching abstractions
Support for data locality in runtimes and tasks models: Many data layouts can be implemented stat-
ically, but the runtime system must be part of the solution for automating those choices for data sizes
and layouts that are only known at runtime. For task models some decisions that balance load-balance
against data-locality can be can be static, semi-static, or fully dynamic depending on context.
Addressing system-scale data locality management issues: The reigning abstraction for system-level
resource management is that all resources at system level are equidistant and equal-cost to access, which
ignores optimizations for affinity or locality. System-wide systems considerations present an area of
research that speaks to the need to develop a new class of locality aware resource managers, locality
aware communication libraries, or adding hooks to enable introspection and control of data locality.
8.3
Next Steps
Follow-on Workshops: In order to maintain our momentum and continue to organize this research com-
munity will require active participation in workshops and perhaps continued dialogue in mini-symposia
and other research gatherings. The Lugano workshop is hopefully the first of a series. The organizers
intend to schedule the next workshop in Berkeley, California for the Spring or Summer of 2015.
Define Research Agenda: As enumerated in section 8.2 four primary research areas have been identified
and the introduction to this report has provided findings and recommendations for the next steps to
carry out a research agenda in each area. As the next step, the community should identify leaders in
each of these respective areas to continue community dialogue on advancing the recommendations and
engaging in their funding agencies to describe the value proposition for investing in this research and
to identify funding opportunities in related areas.
Interoperability: The underlying abstractions and data structures that were outlined by independent re-
searchers showed much commonality in approach and abstractions despite differences in implemen-
tations.
The commonality of approach points to an opportunity to create a common lower-level
implementation for these myriad research products. Mature technologies should consider standards
to support compatibility and interoperability across implementations and work towards a common
underlying system software that can enable multiple user-facing implementations. Such design for
interoperability and (where possible) standardization of lower level interfaces enables a diversity of the
higher-level user-facing APIs.
It is crucial that these systems interoperate with runtimes systems to perform the mapping from data
structures that describe data layout to optimal mapping of the application onto the underlying system
fabric. To accomplish this goal, libraries, languages, and runtimes should offer common interfaces to
the libraries and languages can introspect the system and interact with the system services that control
data placement. This need for interoperation of system services and program description underpins the
desire to get all four of these thrust areas to work together towards common abstractions or standards
where possible. It also ensures a practical amount of effort on the part of HPC system manufacturers
by tying to a common underlying system software infrastructure.
The PADAL workshop has identified several broad research areas that have common cause and related
technologies and solutions. We have held the first of what we hope to be many workshops and meetings to
further establish this research community and to establish points of research collaboration and sharing of
ideas. We look forward to future collaborations and a continued progress in this emerging area of parallel
programming environments research.
Programming Abstractions for Data Locality
43