RAJA on Cooley
Overview
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 targets portable, parallel loop execution by providing building blocks that extend the generally-accepted parallel for idiom.
Additional information can be found at RAJA User Guide.
Using RAJA
RAJA provides a project template for how to use RAJA in an application project that uses CMake or Make. This is located at RAJA Project Template.
How to get the source code
The RAJA source code lives at RAJA github.
It can be cloned with git clone --recursive https://github.com/llnl/raja.git. The recursive clone will also clone RAJA's dependencies in the proper locations.
Building on Cooley
RAJA requires a compiler with C++11 support and CMake version 3.9 or greater. RAJA includes an example build script for Cooley that you can use. A quick example is below.
cd raja
cp scripts/alcf-builds/cooley_nvcc9.1_clang4.0.sh .
./cooley_nvcc9.1_clang4.0.sh
cd build_alcf-cooley-nvcc9.1_clang4.0/
make -j 4
The build script makes use of a CMake configuration file raja/host-configs/alcf-builds/cooley_nvcc_clang4.0.cmake
. The RAJA and compiler options can be adjusted in this configuration file.