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/rmmNVIDIA RMM (RAPIDS Memory Manager) is a C++/Python library that provides flexible, high‑performance GPU memory allocation. It offers multiple allocation strategies (plain, pooled, managed, binning), stream‑ordered allocation, per‑device default resources, and easy CMake/Python integration, helping GPU‑centric workloads avoid the overhead of repeated `cudaMalloc`/`cudaFree`.
- Project
nv-legate/cupynumericA high-performance array computing library that implements the NumPy API on top of the Legate framework to scale NumPy workflows across multiple GPUs and nodes.
- 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.