PROTEAS: PROgramming Toolchain for Emerging Architectures and Systems

The PROTEAS project is a strategic response to the continuous changes in architectures and hardware that are defining the landscape for emerging ECP systems. PROTEAS is a flexible programming framework and integrated toolchain that will provide ECP applications the opportunity to work with programming abstractions and to evaluate solutions that address the exascale programming challenges they face.

Participants

  • Oak Ridge National Laboratory: Jeffrey S. Vetter (PI), Joel E. Denny, Jungwon Kim, and Seyong Lee
  • University of Oregon: Allen D. Malony (Co-PI), Sameer Shende, and Kevin Huck
  • Los Alamos National Laboratory: Kei Davis (Co-PI) and Nicholas Moss
  • Argonne National Laboratory: Hal Finkel (Co-PI)

Sponsor

This research was supported by the Exascale Computing Project (ECP), Project Number: 17-SC-20-SC, a collaborative effort of two DOE organizations -- the Office of Science and the National Nuclear Security Administration -- responsible for the planning and preparation of a capable exascale ecosystem -- including software, applications, hardware, advanced system engineering, and early testbed platforms -- to support the nation's exascale computing imperative.

Description

Programmer productivity and performance portability are two of the most important challenges facing applications targeting future exascale computing platforms. Application developers targeting evolving ECP architectures will find it increasingly difficult to meet these dual challenges without help from integrated capabilities that allow for flexibility, composability, and interoperability across a mixture of programming, runtime, and architectural components. In particular, an integrated programming toolchain is critical for exascale delivery. First, it will provide a programming pathway to anticipated exascale architectures by addressing programmability and portability concerns of emerging technology trends seen in pre-procurement machines. It will also enable ECP applications teams to explore programming options to find the most effective and productive approaches without constraining programming models or software solutions. Second, an integrated programming framework strategy will deliver solutions that will be further refined for the architecture capabilities known to be in the system procurement. This is essential for maintaining developer productivity and attaining performance portability as ECP requirements evolve.

The PROTEAS (PROgramming Toolchain for Emerging Architectures and Systems) project is a strategic response to the continuous changes in architectures and hardware that are defining the landscape for emerging ECP systems. PROTEAS is a flexible programming framework and integrated toolchain that will provide ECP applications the opportunity to work with programming abstractions and to evaluate solutions that address the exascale programming challenges they face.

Objectives

The PROTEAS objectives are the following:

  • Provide productive and performance-portable programming solutions based on directive-based methodologies that support current language paradigms and flexible prototyping of interfaces specifically directed at heterogeneous and manycore processors, deep memory hierarchies, and nonvolatile memory systems (NVM).
  • Provide integrated performance assessment solutions for these programming systems that will enable automatic performance analysis and performance-driven optimization.
  • Provide a integrated programming toolchain that is powerful enough to prototype the above solutions, while flexible enough to extend its functionality over time.
  • Refine our toolchain and solutions through engagement with ECP applications teams who will evaluate prototypes, provide feedback, promote application readiness, and facilitate use of ECP prototype and eventual production machines.
  • Champion our successful solutions in ECP procurements, community standards, and open-source software stacks.

Related Links

ARES: Abstract Representations for the Extreme-Scale Stack

Scout: A Domain-Specific Language & Toolchain

OpenARC: Open Accelerator Research Compiler

NVL-C: Programming NVM as Persistent, High-Performance Main Memory

The LLVM Compiler Infrastructure

Fortran LLVM Support

OpenACC: Directives for Accelerators

The OpenMP API specification for parallel programming

Vancouver: Designing a Next-Generation Software Infrastructure for Productive Heterogeneous Exascale Computing

TAU Performance System