Skip to content
RAJA Performance Portability Layer (C++)
C++ Shell CMake Dockerfile
Branch: develop
Clone or download
Latest commit f76f47f Jan 24, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Removing comments in file so they don't pollute PR template. Sep 27, 2019
benchmark Update copyright to 2020. Happy New Year!! Jan 2, 2020
blt @ 2c19277 Update blt submodule to v0.3.0 Jan 21, 2020
cmake Add c++ standard flag before loading BLT Jan 23, 2020
docs Update copyright to 2020. Happy New Year!! Jan 2, 2020
examples Update copyright to 2020. Happy New Year!! Jan 2, 2020
exercises Merge branch 'develop' into improve-exercises Jan 2, 2020
host-configs Update copyright to 2020. Happy New Year!! Jan 2, 2020
include/RAJA Make version number visible as a #define and export to cmake. Jan 13, 2020
reproducers Update copyright to 2020. Happy New Year!! Jan 2, 2020
scripts Update copyright to 2020. Happy New Year!! Jan 2, 2020
share/raja Make version number visible as a #define and export to cmake. Jan 13, 2020
src Update copyright to 2020. Happy New Year!! Jan 2, 2020
test Merge branch 'develop' into update-blt Jan 23, 2020
tpl Update CUB library to latest release. Jan 19, 2020
travis-data clang9: add libomp-9-dev for openmp support Jan 24, 2020
.clang-format Changed to break AFTER binary operators in expressions -- seems less … Oct 4, 2018
.gitignore Reenabled nested unit tests Dec 22, 2017
.gitmodules Merge remote-tracking branch 'origin/develop' into feature/hip2 Aug 16, 2019
.travis.yml travis: use CUDA_TOOLKIT_ROOT_DIR Jan 24, 2020
CMakeLists.txt Add c++ standard flag before loading BLT Jan 23, 2020
CODE_OF_CONDUCT.md Fix email address Jun 30, 2017
CONTRIBUTING.md Fix formatting issue with SPDX comment in markdown files. Jul 8, 2019
Dockerfile Update copyright to 2020. Happy New Year!! Jan 2, 2020
LICENSE Update copyright to 2020. Happy New Year!! Jan 2, 2020
NOTICE Attempting to fix issues with GitHub not detecting license info. Sep 27, 2019
README.md Fix formatting. Oct 31, 2019
RELEASE Update version number. Oct 3, 2019
RELEASE_NOTES.md Update copyright to 2020. Happy New Year!! Jan 2, 2020
appveyor.yml Use VS2017 again Feb 7, 2018
codecov.yml Add "threshold" for codecov Jun 13, 2019

README.md

RAJA

Build Status Join the chat at https://gitter.im/llnl/raja Coverage

RAJA is a collection of C++ software abstractions, being developed at Lawrence Livermore National Laboratory (LLNL), that enable architecture portability for HPC applications. The overarching goals of RAJA are to:

  • Make existing (production) applications portable with minimal disruption
  • Provide a model for new applications so that they are portable from inception.

RAJA uses standard C++11 -- C++ is the predominant programming language in which many LLNL codes are written. RAJA is rooted in a perspective based on substantial experience working on production mesh-based multiphysics applications at LLNL. Another goal of RAJA is to enable application developers to adapt RAJA concepts and specialize them for different code implementation patterns and C++ usage, since data structures and algorithms vary widely across applications.

RAJA shares goals and concepts found in other C++ portability abstraction approaches, such as Kokkos and Thrust. However, it includes concepts that are absent in other models and which are fundamental to LLNL codes.

It is important to note that RAJA is very much a work-in-progress. The community of researchers and application developers at LLNL that are actively contributing to it and developing new capabilities is growing. The publicly-released version contains only core pieces of RAJA as they exist today. While the basic interfaces are fairly stable, the implementation of the underlying concepts is being refined. Additional features will appear in future releases.

Quick Start

The RAJA code lives in a GitHub repository. To clone the repo, use the command:

git clone --recursive https://github.com/llnl/raja.git

Then, you can build RAJA like any other CMake project, provided you have a C++ compiler that supports the C++11 standard. The simplest way to build the code, using your system default compiler, is to run the following sequence of commands in the top-level RAJA directory (in-source builds are not allowed!):

mkdir build
cd build
cmake ../
make

More details about RAJA configuration options are located in the User Documentation.

We also maintain a RAJA Template Project that shows how to use RAJA in a CMake project, either as a Git submodule or as an installed library.

User Documentation

The RAJA User Guide and Tutorial is the best place to start learning about RAJA and how to use it.

To cite RAJA, please use the following references:

  • RAJA Performance Portability Layer. https://github.com/LLNL/RAJA

  • R. Hornung, H. Jones, J. Keasler, R. Neely, O. Pearce, S. Hammond, C. Trott, P. Lin, C. Vaughan, J. Cook, R. Hoekstra, B. Bergen, J. Payne, G. Womeldorff. ASC Tri-lab Co-design Level 2 Milestone Report 2015, Tech Report, LLNL-TR-677453, Sep. 2015.

Related Software

The RAJA Performance Suite contains a collection of loop kernels implemented in multiple RAJA and non-RAJA variants. We use it to monitor and assess RAJA performance on different platforms using a variety of compilers.

The RAJA Proxies repository contains RAJA versions of several important HPC proxy applications.

CHAI provides a managed array abstraction that works with RAJA to automatically copy data used in RAJA kernels to the appropriate space for execution. It was developed as a complement to RAJA.

Mailing List

Interested in keeping up with RAJA or communicating with its developers and users? Please join our mailing list at Google Groups:

If you have questions, find a bug, or have ideas about expanding the functionality or applicability of RAJA and are interested in contributing to its development, please do not hesitate to contact us. We are very interested in improving RAJA and exploring new ways to use it.

Contributions

The RAJA team follows the GitFlow development model. Folks wishing to contribute to RAJA, should include their work in a feature branch created from the RAJA develop branch. Then, create a pull request with the develop branch as the destination. That branch contains the latest work in RAJA. Periodically, we will merge the develop branch into the master branch and tag a new release.

Authors

The original developers of RAJA are:

Please see the RAJA Contributors Page, to see the full list of contributors to the project.

License

RAJA is licensed under the BSD 3-Clause license, (BSD-3-Clause or https://opensource.org/licenses/BSD-3-Clause).

Copyrights and patents in the RAJA project are retained by contributors. No copyright assignment is required to contribute to RAJA.

Unlimited Open Source - BSD 3-clause Distribution LLNL-CODE-689114 OCEC-16-063

For release details and restrictions, please see the information in the following:

SPDX usage

Individual files contain SPDX tags instead of the full license text. This enables machine processing of license information based on the SPDX License Identifiers that are available here: https://spdx.org/licenses/

Files that are licensed as BSD 3-Clause contain the following text in the license header:

SPDX-License-Identifier: (BSD-3-Clause)

External Packages

RAJA bundles its external dependencies as submodules in the git repository. These packages are covered by various permissive licenses. A summary listing follows. See the license included with each package for full details.

PackageName: BLT
PackageHomePage: https://github.com/LLNL/blt PackageLicenseDeclared: BSD-3-Clause

PackageName: camp PackageHomePage: https://github.com/LLNL/camp PackageLicenseDeclared: BSD-3-Clause

PackageName: CUB
PackageHomePage: https://github.com/NVlabs/cub PackageLicenseDeclared: BSD-3-Clause

You can’t perform that action at this time.