The RAJA Portability Layer: Overview and Status
As computer architectures become increasingly complex and diverse, application developers face difficult challenges to achieve high performance while maintaining code portability. The problem is especially acute for large ASC multiphysics codes. Efficient parallel execution often requires tuning algorithms and data access to match processor and memory system constraints. Changing compiler directives and parallel programming model constructs on thousands of individual loops in a large code is disruptive and unwieldy. RAJA is a programming approach that we have been developing at Lawrence Livermore National Laboratory to encapsulate platform-specific concerns, related to both hardware and parallel programming models. The RAJA abstraction layer simplifies porting C/C++ codes to various programming models and architectures by reducing effort and developer disruption. In this report, we motivate and describe key aspects of RAJA. We also present a preliminary assessment of RAJA based on exploration in three ASC hydrodynamics codes at LLNL, which was one part of a three-part ASC Level 2 milestone, completed in September 2014.
- Publication Date:
- OSTI Identifier:
- Report Number(s):
- DOE Contract Number:
- Resource Type:
- Technical Report
- Research Org:
- Lawrence Livermore National Lab. (LLNL), Livermore, CA (United States)
- Sponsoring Org:
- Country of Publication:
- United States
- 97 MATHEMATICS, COMPUTING, AND INFORMATION SCIENCE; 97 MATHEMATICS, COMPUTING, AND INFORMATION SCIENCE
Enter terms in the toolbar above to search the full text of this document for pages containing specific keywords.