llnl/Umpire
An application-focused API for memory management on NUMA & GPU architectures
What it solves
Umpire addresses the challenge of managing memory across complex hardware architectures, specifically machines that utilize multiple memory devices such as GPUs and NUMA (Non-Uniform Memory Access) systems.
How it works
It functions as a resource management library that enables the discovery, provisioning, and management of memory resources across these diverse hardware devices.
Who it’s for
Developers working on high-performance computing applications that need to efficiently coordinate memory across hierarchical and heterogeneous memory devices.
Highlights
- Resource management for multiple memory devices.
- Support for NUMA and GPU memory.
- Discovery and provisioning of memory resources.
Related
- Project
rapidsai/rmmRMM (RAPIDS Memory Manager) is a C++/Python library that provides a unified interface for GPU memory allocation. It offers multiple allocation strategies (plain CUDA, pooled, fixed‑size, managed, etc.), stream‑ordered allocation, and per‑device default resources. Users can install via pip or conda, or build from source, and then use the API to set custom allocators globally or per‑allocation, improving performance of GPU‑centric workloads.
- Project
nv-legate/cupynumericA high-performance array computing library that implements the NumPy API on top of the Legate framework to scale workflows to thousands of GPUs.
- Project
anderskm/gputilA Python module that uses nvidia-smi to monitor NVIDIA GPU status and programmatically select available GPUs based on memory and load.
- Project
Traverse-Research/gpu-allocatorA Rust-native GPU memory allocator that provides a unified interface for managing memory across Vulkan, DirectX 12, and Metal.
- Project
Project-HAMi/HAMi-coreAn in-container GPU resource controller that intercepts CUDA calls to enforce per-container memory and compute utilization limits without modifying applications or drivers.