Skip to content

Latest commit

 

History

History
112 lines (81 loc) · 4.59 KB

File metadata and controls

112 lines (81 loc) · 4.59 KB

CHAI Software Release Notes

Notes describing significant changes in each CHAI release are documented in this file.

The format of this file is based on Keep a Changelog.

[Version 2025.12.0] = Release date 2025-12-22

Fixed

  • Fixed compiler error related to using a lambda as a default function argument.
  • Fixed thin version of a ManagedArray constructor.

Changed

  • Updated Umpire to v2025.12.0.
  • Updated RAJA to v2025.12.0.

Added

  • Added CHAI_VERSION_* macros to chai/config.hpp.
  • Added overload of chai::unpack for ManagedArray<managed_ptr<T>> for use in calls to chai::make_managed.

[Version 2025.09.1] - Release date 2025-09-15

Fixed

  • Fixed build error when CHAI_ENABLE_EXPERIMENTAL was set to ON.

Changed

  • Turned off CHAI_ENABLE_EXPERIMENTAL by default.

[Version 2025.09.0] - Release date 2025-09-12

Fixed

  • Improved support for non-trivial element types in ManagedArray.

Changed

  • CHAI now requires C++17 as the minimum C++ standard.
  • CHAI now requires CUDA 11 as the minimum CUDA version.
  • Updated BLT to v0.7.1.
  • Updated Umpire to v2025.09.0.
  • Updated RAJA to v2025.09.0.

Experimental

  • Added a ManagedSharedPtr class similar to managed_ptr that acts like std::shared_ptr on the host and a view on the device.
  • Added CHAI_ENABLE_EXPERIMENTAL CMake option for enabling experimental features. Defaults to ON.

[Version 2025.03.1] - Release date 2025-06-23

Changed

  • Updated to RAJA v2025.03.2
  • Use memcpy instead of umpire copy for CPU-only thin managed array realloc (allows tracking to be disabled).

Fixed

  • Fixed ManagedArray::set when CHAI_DISABLE_RM=OFF and the initial space is not CPU.
  • Fixed memory leaks in ArrayManager.

[Version 2025.03.0] - Release date 2025-03-19

Added

  • Added a ManagedArray::clone function and deprecated chai::deepCopy.

Fixed

  • Fixes reallocate when using pinned or unified memory.
  • Adds missing synchronize when using pinned memory.
  • Fixes possible hangs when evicting data.
  • Now respects allocators passed to ManagedArray constructors when CHAI_DISABLE_RM=TRUE.

Removed

  • Removes deprecated ManagedArray::getPointer method. Use ManagedArray::data instead.
  • Removes ManagedArray::incr and ManagedArray::decr methods. Use ManagedArray::pick and ManagedArray::set instead.
  • Removes optional support for implicitly casting between raw pointers and ManagedArrays (CHAI_ENABLE_IMPLICIT_CONVERSIONS). Use makeManagedArray and ManagedArray::data to perform explicit conversions instead.
  • Removes equality and inequality comparison operators between ManagedArrays and raw pointers.
  • Removes make_managed_from_factory function for creating managed_ptr objects from factory functions. This change will lead to safer adoption of allocators during construction and destruction of managed_ptr objects.
  • Removes CHAI_ENABLE_PICK CMake option. ManagedArray::pick and ManagedArray::set will always be available.

[Version 2024.07.0] - Release date 2024-07-26

Changed

  • Updated to Umpire v2024.07.0 and RAJA v2024.07.0
  • Increased minimum CMake version required to 3.23
  • Turns off benchmarks and examples by default
  • Enable RAJA plugin by default

[Version 2024.02.2] - Release date 2024-06-26

Changed

  • Updated to RAJA v2024.02.2
  • Improved debugging with GPU simulation mode

[Version 2024.02.1] - Release date 2024-04-19

Changed

  • Updated to BLT v0.6.2, Umpire v2024.02.1, and RAJA v2024.02.1

[Version 2024.02.0] - Release date 2024-03-04

Added

  • Support for APUs with a single memory space. To use, configure with -DCHAI_DISABLE_RM=ON -DCHAI_THIN_GPU_ALLOCATE=ON.

Changed

  • Moved installed CMake targets from share/chai/cmake to lib/cmake/chai to be consistent with other libraries in the RAJA Portability Suite
  • Improved dependency handling during the build of CHAI and when it is imported into another library/application
  • Removed ArrayManager::enableDeviceSynchronization and ArrayManager::disableDeviceSynchronization. Instead, use the environment variables for device synchronization after all kernels (e.g. CUDA_LAUNCH_BLOCKING or HIP_LAUNCH_BLOCKING)

Fixed

  • Use free instead of realloc when the size is 0 (fixes a warning from valgrind)