cms-patatrack/cmssw

Investigate the ujse of RAJA

Closed this issue · 2 comments

We should investigate the use of RAJA for performance portability across different backends.

RAJA is a collection of C++ libraries developed at Lawrence Livermore National Laboratory (LLNL), available on GitHub under a 3-clause BSD license.

From the README for RAJA v0.8.0:

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.

...

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.

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

some comments from Matti's presentation at the September 4th O&C meeting:

  • largely in-house development model to support LLNS code base
  • awkward syntax

So far RAJA is disfavoured with respect to Alpaka/Cupla, Kokkos, or possibly SYCL.