Notes describing significant changes in each CARE release are documented in this file.
The format of this file is based on Keep a Changelog.
- Added CARE_DEEP_COPY_RAW_PTR configuration option.
- Added ATOMIC_SUB, ATOMIC_LOAD, ATOMIC_STORE, ATOMIC_EXCHANGE, and ATOMIC_CAS macros.
- Removed Accessor template parameter from host_device_ptr.
- Removed NoOpAccessor and RaceConditionAccessor. It is recommended to use ThreadSanitizer (TSAN) instead to locate race conditions.
- Removed CARE_ENABLE_RACE_DETECTION configuration option.
- Removed implicit conversions between raw pointers and host_device_ptrs/host_ptrs and the corresponding CARE_ENABLE_IMPLICIT_CONVERSIONS configuration option.
- Renamed host_device_ptr::getPointer to host_device_ptr::data.
- Replaced calls to chai::ManagedArray::getPointer (previously deprecated and now removed) with calls to chai::ManagedArray::data.
- Explicitly define host_device_map constructors since some versions of CUDA do not properly generate them.
- Added default and move constructors and move assignment operator to host_device_map
- Default policies concerning reductions were updated to RAJA's newly recommended policies.
- Now using '<' in care::BinarySearch.
- Removed C++17 features so that CARE is C++14 compliant. The next release of CARE will require C++17.
- LLNL_GlobalID is no longer required downstream from CARE if it is disabled in CARE.
- Const correctness fix in uniqArray API.
- Sequential IntersectArrays now allocates data in a way that is consistent with the memory model CHAI uses for Hip GPU builds.
- Replaced loop_work alias with seq_work (loop_work was removed in RAJA v2024.02.2)
- Fixed CHUNKED loop macro implementations
- Updated to Umpire/RAJA/CHAI v2024.07.0
- Updated minimum required CMake to 3.23
- Updated to CHAI v2024.02.2
- Alias for execution policy specificially for kernels with reductions
- Chunked loop policies
- Support for APUs with a single memory space.
- ArrayDup overloads
- LocalSortPairs for a thread local simultaneous sort
- Better support for unsigned and 64 bit integers (explicit instantiations of some algorithms, a SCAN_LOOP_64 macro)
- Camp submodule
- radiuss-ci submodule
- The
chai_force_sync
function used for debugging (the corresponding functionality in CHAI has also been removed)
- When building with submodules, they now need to be initialized recursively
- When building with external libraries, specify the install location with
-D<uppercase name>_DIR
(previously, the lowercase version was also accepted) - Only tests are built by default now. Docs, examples, and benchmarks must be enabled explicitly.
- The
CARE_ENABLE_*
options for tests, docs, examples, and benchmarks now CMake dependent options based on the correspondingENABLE_*
options - care-config.cmake has been moved to ${INSTALL_PREFIX}/lib/cmake/care and now properly exports CMake targets for care
- Eliminated some unnecessary data motion for GPU builds
- Several fixes were added for shared library builds on Windows
- Some warnings have been fixed