Releases: LLNL/Umpire
v2024.07.0
Changes Impacting Builds
This release of Umpire contains new build requirements including:
- Cmake version 3.23 or later is required.
- Camp version v2024.07.0 or later is required.
Bug Fixes
- Umpire uses Fortran_FORMAT to avoid compilation errors when using LLVM flang.
Improvements
- SYCL and Intel builds were added to Umpire`s DockerFile in addition to other builds in the Github workflow for better testing.
v2024.02.1
Bug Fixes
- Make usage of fmt header-only by default
v2024.02.0
New Features
- Allow using external fmt
Improvements
- Change default heuristic to
percent_releasable_hwm(100)
- Making
umpire_device
a separate library - Use GNUInstallDirs to set installation directories
Bug Fixes
- Make allocate API threadsafe
- Unroll product loop to fix overflow in Fortran wrappers
- Fix typo in
HostSharedMemoryResourceImpl
causing infinite loop
v2023.06.0
New Features
- Add
_hwm
variant of pool heuristic functions. These reallocate to the high watermark value after a coalescing, and can reduce memory overhead.
Improvements
-
Support 2023 OneAPI release.
-
Add HIP support to the DeviceAllocator.
Bug Fixes
-
Prefix fmt macros to avoid conflicts with other libraries including fmt.
-
Replace deprecated random_shuffle usage with shuffle for c++17.
-
Make exported include directories relative to install prefix.
v2022.10.0
New Features
-
New HIP Advise operations have been added for setting and unsetting of the
READ_MOSTLY
,PREFERRED_LOCATION
, andACCESSED_BY
advice.For HIP versions >= 5, operations to set and unset
COARSE_GRAIN
has also been added. -
getCurrentSize
andgetTotalSize
methods were added to theDeviceAllocator
API. -
New event tracking has been added that can stream events to JSON (for replays)
and SQLITE. -
UMAP
allocation resource has been added.
Improvements
- Using
try_get
for async device operations.
Bug Fixes
-
Fixed build problem for Fortan builds by properly installing the Umpire module files.
-
Fixed build problem on certain configurations where the
std::filesystem
check was returning incorrect results. -
Instead of throwing an exception, the
is_device_allocator
helper function
now returnsfalse
if theDeviceAllocator
object has not yet been instantiated. -
Fixed
FixedMallocPool
on Windows, allowing theQuickPool
allocator to be safely copied.
Build Configuration Updates
-
Add
UMPIRE_DISABLE_ALLOCATIONMAP_DEBUG
(default isOFF
) option that allows users to disable
the AllocationMap from dumping all records when an allocation is not found in a debug build. -
Using
UMPIRE_ENABLE_MPI
instead ofENABLE_MPI
for Umpire-specific MPI capabilities -
Using
UMPIRE_ENABLE_IPC_SHARED_MEMORY
instead ofENABLE_IPC_SHARED_MEMORY
to indicate this is an Umpire-specific implementation feature.
v2022.03.1
This is a patch release of v2022.03 that fixes reported build errors by setting UMPIRE_ENABLE_DOCS
back to OFF
by default since building documentation sets requires additional tools to build properly.
v2022.03.0
v2022.03.0
Changes Impacting Builds
This release of Umpire contains new build requirements including:
- C++14 is now required to build Umpire
- CMake version 3.14 or later is required
- The install location for
umpire-config.cmake
has changed from$(UMPIRE_INSTALL)/share/umpire/cmake
to$(UMPIRE_INSTALL)/lib/cmake/umpire
.
Changes Impacting C/Fortran
- The CMake object library for
C/FORTRAN
interface has been reorganized.
(NOTE: This is a breaking change since the include paths are now different.) - The
C/FORTRAN
interface header files have moved fromumpire/interface/
toumpire/interface/c_fortran/
so including files will need to be updated in order to find them.
New Interfaces
- Added a
getDeviceAllocator
function that allows users to get aDeviceAllocator
object from the kernel without explicitly passing the allocator to the kernel first. - Added a
reset
function to theDeviceAllocator
so that old data can be rewritten. - Expose
PREFETCH
operations registered with theMemoryOperationRegistry
with a newResourceManager::prefetch
method.
Removed Interfaces
The following functions previously marked as deprecated have now been removed:
DynamicPoolMap
andDynamicPool
aliases removedregisterAllocator
andisAllocatorRegistered
removed
Fixes
- Fixed a cmake install config issue so that now users can find a package of Umpire with a version constraint.
- Fix
ResourceManager::isAllocator
to work for resources - Fix comparison operators for
TypedAllocators
- Fix host and device Allocator ID overlap
- Remove null and zero-byte pool from list of valid allocators
New Configuration Options
- The
UMPIRE_ENABLE_DEVICE_ALLOCATOR
option was added to control whether or not the DeviceAllocator class is included in the library. The default is "Off".
Build/Deployment Improvements
C/FORTRAN
API is now auto generated- The
umpire-config.cmake
package is now relocatable - Use
blt
namespace for hip targets - Umpire
CMakeList
options now haveUMPIRE_
prefixes and are now dependent upon correspondingBLT
options. - Removed hardcoded
-Xcompiler -mno-float128
for GCC 8+ with CUDA on PowerPC. - Build Doxygen documentation on ReadTheDocs.
Continuous Integration Updates
- Add CI job with interprocess shared memory and CUDA
- Add CI containers to allow for gcc{7,8,9}, clang{11,12}, and nvcc{10,11}
- Add CI to check pools work with
DEVICE_CONST
memory
v6.0.0
Added documentation on allocator (in)accessibility as well as getAllocator usage.
Added a Release function to FixedPool and corresponding gtest in strategy_tests
Installed thirdparty exports in CMake configuration file
Replay will now display high water mark statistics per allocator.
Initial support for IPC Shared Memory via a "SHARED" resource allocator. IPC Shared memory is initially available on the Host resource and will default to the value of ENABLE_MPI.
Added get_communicator_for_allocator to get an MPI Communicator for the scope of a shared allocator.
Added Allocator::getStrategyName() to get name of the strategy used.
Added getActualHighwatermark to all pool strategies, returns the high water value of getActualSize.
Added umpire::mark_event() to mark an event during Umpire lifecycle
Added asynchronous memset and reallocate operations for CUDA and HIP.
Added support for named allocations.
DynamicPoolMap marked deprecated. QuickPool should be used instead.
Refactored pool coalesce heuristic API to return either 0 or the minimum pool size to allocate when a coalesce is to be performed. No functional change yet.
All asynchronous operations now return a camp::resources::EventProxy to avoid the overhead of creating Events when they are unused.
Removed all internal tracking, allocations are only tracked at the Allocator level.
v5.0.1 Release
v5.0.1
- Fixed bug where zero-byte allocations from Umpire were sometimes incorrectly reported as not being Umpire allocations
v5.0.0 - Sleepless in Umpire
-
Memory Resource header and source files for HIP.
-
Unified Memory support for HIP, including testing and benchmarking (temp support for Fortran).
-
Added a getParent functionality for retrieving the memory resource of an allocator.
-
Added an allocator accessibility functionality for checking if an allocator is accessible given
a certain platform. -
Changed enumeration names from all upper case to all lower case in order to
avoid name collisions. -
Fixed up broken source links in tutorial documentation.
-
registerAllocator is deprecated, addAlias should be used instead.
-
Moved backend-specific resource code out of ResourceManager and into resource::MemoryResourceRegistry.
-
Fixed accounting for number of releasable bytes in Quickpool that was causing
coalesce operations to not work properly.