Skip to content

v2022.03.0

Compare
Choose a tag to compare
@rhornung67 rhornung67 released this 15 Mar 19:31
· 2810 commits to main since this release
4351fe6

This release contains new features, bug fixes, and build improvements. Please see the release notes below and the RAJA user guide for more information about items in this release.

Please download the RAJA-v2022.03.0.tar.gz file below. The others, generated by GitHub, will not work due to RAJA's use of git submodules.

Notable changes include:

  • Important note: As of this release, the coordinated release of RAJA Portability Suite components (RAJA, Umpire, CHAI, and camp) will be tagged as YYYY.MM.pp for year, month, and patch number. For example, This release is tagged 2022.03.0. indicating that is was part of a coordinated RAJA Suite release in March 2022. The intent of the new labeling scheme is to indicate that all Suite components with a common year-month release tag are compatible and to make the association amongst them clear to users. If an individual component requires a patch release independent of the others, the release for that component will be labeled 2022.03.1, for example, to indicate that it is one patch release beyond the original combined Suite release.

  • New features / API changes:

    • BREAKING CHANGE: RAJA OffsetLayout constructor was changed to take (begin, end) args (where end is one past the last index) instead of (first, last) args (where last index was included). This is consistent with expected behavior and other RAJA Layout/View concepts.
    • New experimental features that support SIMD/SIMT programming by guaranteeing vectorization without the need to rely on compiler auto-vectorization. Basic documentation for this is included in the RAJA User Guide and should provide enough description for interested users to try it out.
    • "Flatten" policies were added for RAJA Teams. This reshapes multi-dimensional GPU thread blocks to 1D.
    • RAJA Teams now allows a single execution policy to be provided. Previously, it required two; e.g., a CPU policy and a GPU policy.
    • ROCTX suport has been added to enable kernel naming with RAJA Teams.
    • Details of CUDA and HIP errors are now added to the reported exception string. Previously, this information was going to stderr.
    • All CUDA execution policies have been expanded to allow users to specify a minimum number of blocks per SM, if they wish to do that. An analogous capability for HIP execution policies is being hashed out.
    • Changes were made to RAJA scans to address a consistency issue and allow passing a const pointer as an input span.
    • RAJA View pointer type is fixed to properly allow CHAI ManagedArray type to be passed through to View instead of the raw pointer type. This fixes an issue where some required CHAI memory transfers were not occurring.
    • A "combining adapter" concept has been added that allows multi-dimensional loops to be run using one-dimensional interfaces. Please see the RAJA User Guide for more description.
    • Additional feature support and improvements have been made to the RAJA SYCL back-end (please see the RAJA User Guide for more information):
      • "nontrivially copyable" SYCL interface has been removed (i.e., 'RAJA::sycl_exec_nontrivial<...>' and
        'RAJA::SyclKernelNonTrivial<...>') as these constructs are no longer needed when using recent updates to the Intel OneAPI compiler. Execution is now dispatched based on the C++ 'is_trivially_copyable' type trait.
      • Support for RAJA::kernel loop tiling policies is now available for SYCL execution.
      • The naming scheme for SYCL 'group' and 'local' policies has been changed from 1-based to 0-based for block dimensions.
      • The use of the SYCL atomic OneAPI extension namespace has been cleaned up.
  • Build changes/improvements:

    • AS OF THIS RELEASE, RAJA REQUIRES A C++14-COMPLIANT COMPILER TO BUILD.
    • AS OF THIS RELEASE, RAJA REQUIRES CMAKE version 3.14.5 or newer.
    • The BLT submodule is updated to v0.5.0, which includes improved support for ROCm/HIP builds.Although the option CMAKE_HIP_ARCHITECTURES to specify the HIP target architecture is not available until CMake version 3.21, the option is supported in the new BLT version and works with all versions of CMake.
    • The camp submodule is updated to v2022.03.0. If you do not use the submodule and build RAJA with an external version of camp, you will need to use camp v2022.03.0 or newer.
    • The "RAJA_" prefix has been added to all CMake options. Options that shadow a CMake or BLT option are turned into cmake_dependent_option calls, ensuring that they can be controlled independently and have the correct dependence on the underlying CMake or BLT support; e.g., RAJA_ENABLE_CUDA requires ENABLE_CUDA.
    • The camp_DIR export has been removed. Camp paths will be searched using the default logic which consistent with camp.
    • The raja-config.cmake package file is now "relocatable", meaning it can be moved to another directory location after an install and still work. This should make it easier to use for applications that use RAJA and CMake, but do not use BLT.
    • CMake logic for using CUB in RAJA for a CUDA build has been changed. The default behavior is now that when the CUDA version is < 11, the RAJA CUB submodule will be used. When the CUDA version is >= 11, the CUB version that is included in the associated CUDA toolkit will be used. Users have the ability to override these defaults and select a specific version of CUB if they wish.
    • CMake logic for using rocPRIM in RAJA for a HIP build is similar. The default behavior is now that when the HIP version is < 4, the RAJA rocPRIM submodule will be used. When the HIP version is >= 4, the rocPRIM version that is included in the associated ROCm toolkit will be used. Users have the ability to override these defaults and select a specific version of rocPRIM if they wish.
    • The RAJA Spack package was updated to include the version of this release and address some issues.
    • Added a concept of RAJA_HIP_ACTIVE that mirrors RAJA_CUDA_ACTIVE.
    • The CMake option RAJA_ENABLE_HIP_INDIRECT_FUNCTION_CALL has been removed. Now the choice is made based on the ROCm compiler version.
  • Bug fixes/improvements:

    • A bug in TBB non-inplace scan implementation was fixed.
    • RAJA StaticLayout was fixed to avoid compiler warnings due to converting a negative integer value to an unsigned integral type.
    • Various improvements, updates, and fixes (formatting, typos, etc.) in RAJA User Guide.