Releases: llnl/RAJA
Release list
v2026.07.0
This release contains new code features, bug fixes, and user documentation improvements. It also contains a lot of internal code restructuring that was enabled by moving to C++20, such as replacing SFINAE with Concepts.
Please download the RAJA-v2026.07.0.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependence on git submodules.
IMPORTANT: This RAJA release requires C++20.
Deprecations:
- A number of GPU execution policies are considered deprecated and will emit a compilation warning when used. The policies will be removed in the next release. For details about policy deprecations and what should be used instead, please see #2066.
- Using RAJA reductions without explicitly specifying an initial reduction value is deprecated. In the next release, an initial value will be required for all RAJA reductions.
Notable changes include:
-
New features / API changes:
- Added support for improved error handling in device code. Specifically, it allows for host callback methods to process message information generated in device code. Please see the "Messages" feature section of the RAJA User Guide for more information.
- Added policy enum argument to RAJA reducer and multi-reducer constructors and reset methods to allow them to optimize resource usage based on the back-end that they are actually used with when invoked. The usage syntax is described in the RAJA User Guide.
- Reduction types have been changed, as needed, to use the reduction identity value (zero for sum, max value for min, etc.) when default initialized (i.e., without a user-supplied initial value). This may be a breaking behavior change for users that relied on (incorrect/inconsistent) default initialization. Default initialization of RAJA reductions is considered deprecated. In the next release, users will be required to provide an initialization value for all RAJA reductions.
- Added generic device execution policies. These are actually aliases to pre-existing RAJA policies. They resolve automatically to the active RAJA GPU back-end without specify the back-end explicitly. They also handle convention mismatches between CUDA/HIP thread/block dimension ordering and SYCL work-group/item dimension ordering. Please see the policy section of the RAJA User Guide for more information.
- Added Python-like range helpers for common loop iteration patterns. They mirror the Python "range" feature and can be used with RAJA kernel execution interfaces. Please see the RAJA User Guide for a description and examples.
- Added support for non-arithmetic types, generic comparison operators, and non-pointer iterators in RAJA::sort and RAJA::sort_pairs for CUDA and HIP. The sorts now use the CUB and ROCprim merge sort implementations that were unavailable previously.
- Added
RAJA::atomicGenericto enable user-defined atomic operations implemented using a compare-and-swap loop. TheRAJA::atomicGenericoperation can also take a predicate that is used to determine if the CAS loop can be exited early. - Added
RAJA::masktype for use withRAJA::launch. This is a per-team helper intended to run kernel setup workin a single thread before a team sync call. - Code cleanup and consistency improvements in Camp required some cosmetic changes to method signatures that may be visible to RAJA user code. For example, the Camp event
wait_for()method now takes a reference instead of a pointer. - Introduced JIT compilation with Proteus. Currently, this is only supported as a compile time configuration option. Please see the RAJA User Guide for more information.
-
Build changes/improvements:
- C++20 is now required to build RAJA.
- Updated Camp submodule to v2026.07.1 Camp release.
- Updated BLT submodule to v0.7.2 BLT release.
- Support for CUDA 13 was added. RAJA can be built with CUDA 12 or CUDA 13 versions. However, CUDA versions earlier than 12 are no longer supported due to the C++20 requirement.
-
Bug fixes/improvements:
- Fixed an issue in
RAJA::forall_Icountrelated to the number of template parameters that are supported. - Fixed MSVC compatibility issues in RAJA vectorization support.
- Fixed indexing/layout issue for column matrix subtraction in RAJA vectorization support.
- Fixed ambiguous naming issue in RAJA sort support related to C++ standard library header inclusions.
- Fixed potential vectorization bug caused by internal binary operator traits implementation.
- Fixed issues related to accumulation variable type consistency in RAJA scan support. Prior to the fix, different back end implementations used different variable types to accumulate intermediate values. Now everything is consistent across RAJA back-ends.
- Fixed issue where invalid launch bounds (e.g., blocksize zero) could be passed to compiler. This causes issues in some versions of compilers for GPU code.
- Fixed an issue in
v2025.12.2
This release contains a bug fix and some performance enhancements resulting from new execution policies.
Please download the RAJA-v2025.12.2.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependence on git submodules.
Notable changes include:
-
New features / API changes:
- Add new policies for RAJA::launch that enable caching of team (block) indices and dimensions, and thread indices and dimensions. This eliminates repeated calls to device intrinsics when those quantities are used multiple times in a kernel. A new example code was added to show the usage. RAJA User Guide documentation will be forthcoming.
-
Build changes/improvements:
- None
-
Bug fixes/improvements:
- Fixed issue with our checks for C++ symbol names.
v2025.12.1
This release contains some improvements to code robustness, including evolving internal code implementations to use C++17 features. Our plan is to require C++20 in our next major release.
Please download the RAJA-v2025.12.1.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependence on git submodules.
Notable changes include:
-
New features / API changes:
- Add Kahan sum class used internally to make parallel sum reductions more accurate. Note that using fast-math compiler option (default with the Intel compiler) will undo the accuracy increase. To recover the accuracy with the Intel compiler, use the '-fp-model=precise' option.
-
Build changes/improvements:
- Bump minimum CMake version required to 3.24.
-
Bug fixes/improvements:
- Various internal code cleanups, simplifications, and improvements using C++17 features.
v2025.12.0
This release contains mostly improvements to code robustness and testing, including evolving internal code implementations to use C++17.
Please download the RAJA-v2025.12.0.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependence on git submodules.
Notable changes include:
-
New features / API changes: NONE
-
Build changes/improvements:
- Update Camp submodule to v2025.12.0 release.
- Improve CMake support for configuring with Caliper and fix issue reported by a user.
-
Bug fixes/improvements:
- Fix compilation failure when a downstream library or applications is built without OpenMP enabled when RAJA was built with OpenMP enabled. There may still be some corner cases that violate C++ ODR that we have not resolved and are not being exposed by users.
- Various internal code cleanups, simplifications, and improvements using C++17 features, with an eye toward C++20.
v2025.09.1
This release contains some bug fixes and build changes.
Please download the RAJA-v2025.09.1.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependence on git submodules.
- This release contains a bugfix and a submodule update:
- A build conflict with Caliper and ROCTX/NVTX has been fixed
- BlueOS cmake scripts have been removed
- toss3/clangcuda_6_0_0_nvcc_8_0.cmake has been removed
- C++17 features have been used to simplify RAJA internals
- Missing use of const has been corrected in the CompareFirst struct methods
v2025.09.0
This release contains a variety of new features, bug fixes, and build changes.
Please download the RAJA-v2025.09.0.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependence on git submodules.
Notable changes include:
-
New features / API changes:
- The RAJA::expt::Reduce interface now works with RAJA::kernel. There is an example of this usage in the RAJA/examples/kernel-reduction.cpp file.
- Builtin atomics for unsigned fixed width integer types that support Windows builds have been added.
- Added a global function to turn on/off Caliper profiling, when enabled.
- Added some quality-of-life improvements to RAJA MultiView construct, such as the ability to construct and set a MultiView with const data, the ability to construct an empty MultiView, and new accessors to data and layout.
- Added
sizemethods to the RAJA IndexLayout construct. These can be used to check the size of the layout or to determine whether the size is non-zero. All the size methods directly call the base Layout implementation. Also added host-device decorators to the methodsmake_tuple_indexandmake_index_layout. - Added the
grid_constantdecorator to global function parameters for CUDA and make most global function parameters const for CUDA and HIP. This allows nvcc to better optimize parameter usage in some cases. ROCm compilers do not support this decorator and do not appear to optimize use of this parameter. For more details, please see https://docs.nvidia.com/cuda/cuda-c-programming-guide/#grid-constant - Added an experimental feature to support printing of arguments to GPU API functions on error. This capability will continue to improve and mature. Hopefully, it will help RAJA users understand what went wrong when a GPU kernel fails. This capability is currently supported for RAJA CUDA and HIP back-ends.
-
Build changes/improvements:
- RAJA now requires C++17 as the minimum C++ standard.
- Updated BLT submodule to v0.7.1 release.
- Updated Camp submodule to v2025.09.2 release.
- Updated to NVTX3 profiling library to support CUDA 12.9 and above (also supports back to CUDA 10)
- [BREAKING CHANGE] Renamed CMake option
RAJA_ENABLE_NV_TOOLS_EXTtoRAJA_ENABLE_NVTX - Updated desul submodule to 6114dd25b54782678c555c0c1d2197f13cc8d2a0 commit.
- The CUB and rocPRIM submodules in RAJA have been removed. Moving forward, the versions of these that are deployed with the CUDA and ROCm compiler stacks will be used.
- Fixed the RAJA minimum architecture check, which did not work on Blackwell cards. Now, if
CMAKE_CUDA_ARCHITECTURESis not set, the compiler will select a reasonable architecture default, which is guaranteed to be at leastsm_35for nvcc since RAJA now requires CUDA 11 as the minimum CUDA version.
-
Bug fixes/improvements:
- Race conditions due to inconsistent usage of Camp resources (CUDA/HIP streams) in RAJA tests have been fixed.
- Resolved a bunch of shadow variable warnings reported by some users.
v2025.03.2
This release contains bugfixes.
Please download the RAJA-v2025.03.2.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependencies on git submodules.
- Build changes/improvements:
- Removed unused variables related to kernel naming
- Added missing host device annotations on missing param reducers
- CMAKE build option to allow for use of OpenMP 5.1 atomics for min/max operations. The option is on by default.
- Full backwards compatibility of kernel naming and lambda capture style reducers.
- Removed compiler warnings related to NVCC and loop unrolling
v2025.03.1
This release contains one new feature and a bug fix.
Please download the RAJA-v2025.03.1.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependencies on git submodules.
Notable changes include:
-
New features / API changes:
- Added initial support for Caliper to gather profiling data for kernels. See user docs and examples for configuration instructions and examples of usage.
-
Build changes/improvements:
- None
-
Bug fixes/improvements:
- Fix header file include issue when vectorization enabled in a HIP build.
v2025.03.0
This release contains new features, bug fixes, and updates to submodule dependencies.
Please download the RAJA-v2025.03.0.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependencies on git submodules.
Notable changes include:
-
New features / API changes:
- Added improved support for perfectly nested loops in RAJA::launch.
- Added helper methods to simplify the creation of RAJA View objects with permutations of stride ordering. Examples and user docs have also been added.
- Added GPU policies for CUDA and HIP that do not check loop bounds when they do not need to be checked in a kernel. This can help improve performance by up to 5%. The new policies are documented in the RAJA user guide and include
direct_uncheckedin their names. - Refactored the new (experimental) RAJA reduction interface to have consistent min/max/loc operator semantics and added type safety to reduce erroneous usage. Changes are described in the RAJA User Guide.
- Added support for new RAJA reduction interface to RAJA::dynamic_forall and pulled dynamic_forall out of RAJA
exptnamespace. - Added
RAJA_HIP_WAVESIZECMake option to set the wave size for HIP builds. It defaults to 64 but can be set to 32, for example, to build RAJA to run on Radeon gaming cards.
-
Build changes/improvements:
- Update BLT to v0.7.0 release.
- Update camp submodule to v2025.03.0 release.
- Update desul submodule to 6114dd25b54782678c555c0c1d2197f13cc8d2a0 commit.
- Added clang-format CI check (clang 14) that must pass before a PR can be merged -- noted here so external contributors are aware.
-
Bug fixes/improvements:
- Resolved undefined behavior related to constructing uniform_int_distribution with min > max. This was causing some Windows tests to fail.
- Corrected call to wrong global function when using a fixed CUDA policy and reductions in RAJA::launch kernel -- potential performance issue.
- Fixed memory leak in RAJA::launch OpenMP back-end.
- Added missing host-device decorations to some math utility functions.
- Fixed MSVC compilation failures with 64-bit intrinsics in x86 Windows builds.
- Fixed issue so that a kernel will no longer be launched when there is no work for it to do; i.e., no active iteration space entries.
- Removed invalid C++ usage in implementation of RAJA::kernel
initLocalMemstatement, which was causing large warning messages during compilation.
v2024.07.0
This release contains new features, improvements, and bugfixes.
Please download the RAJA-v2024.07.0.tar.gz file below. The others, generated by GitHub, may not work for you due to RAJA's dependencies on git submodules.
Notable changes include:
-
New features / API changes:
- Added support for a "multi-reduction" operation which allows users to perform a run time-defined number of reduction operations in a kernel. Please see the RAJA User Guide for details and examples.
- Added first couple of sections for a "RAJA Cookbook" in the RAJA User Guide. The goal is to provide users with more detailed guidance about using RAJA features, choosing execution policies, etc. Additional content will be provided in future releases.
- Added atomicLoad and atomicStore routines for correctness in some use cases.
- Added OpenMP 5.1 implementations for atomicMin and atomicMax.
- Add SYCL reduction support in RAJA::launch
-
Build changes/improvements:
- Update camp submodule to v2024.07.0 release. There will be a version constraint for this release in RAJA Spack package when that is pushed upstream to Spack.
- Minimum required CMake version bumped to 3.23.
-
Bug fixes/improvements:
- Fix CMake issue for case when RAJA is used as a submodule dependency.
- Various fixes and improvements to builtin atomic support.
- Fixes and improvements to other atomic operations:
- Modified HIP and CUDA generic atomic compare and swap algorithms to use atomic loads instead of relying on volatile.
- Re-implemented atomic loads in terms of builtin atomics for CUDA and HIP so that the generic compare and swap functions can use it.
- Removes volatile qualifier in atomic function signatures.
- Use cuda::atomic_ref in newer versions of CUDA to back atomicLoad/atomicStore.
- Use atomicAdd as a fallback for atomicSub in CUDA.
- Removed checks where CUDA_ARCH is less than 350 since RAJA requires that as the minimum supported architecture (CMake check).
- Fixed issues with naming RAJA forall::kernels when using CUDA.
- Fixes in SYCL back-end for RAJA::launch.
- Fixed some issues in examples.
- Bugfixes and cleanup in parts of the SYCL back-end needed to support a bunch of new SYCL kernels that will appear in RAJA Performance Suite release.
- Fix type naming issue that was exposed with a new version of the Intel oneAPI compiler.
- Fix issue in User Guide documentation for configuring a project using RAJA CMake configuration.