Project-HAMi/HAMi-core
A transparent, in-container GPU resource controller that enforces memory and compute limits by intercepting CUDA calls without application or driver changes.
What it solves
HAMi-core is an in-container GPU resource controller that allows users to enforce strict limits on device memory and compute utilization (SM utility) for CUDA applications. It solves the problem of GPU resource fragmentation and inefficient allocation by enabling virtualization of GPU resources within containers, preventing a single application from consuming all available GPU memory or compute power.
How it works
The library operates by hijacking (intercepting) the API calls between the CUDA Runtime (libcudart.so) and the CUDA Driver (libcuda.so). By sitting in the middle of these calls, HAMi-core can monitor and enforce memory and compute limits without requiring any changes to the application code or the NVIDIA driver.
Who it’s for
This tool is designed for developers and platform engineers managing GPU-accelerated containers, particularly those using orchestrators like Volcano or the broader HAMi project to manage shared GPU resources.
Highlights
- Zero Application Changes: Enforces limits without modifying the source code of the CUDA application.
- Memory Virtualization: Virtualizes device memory to set specific upper limits per container.
- Compute Limiting: Limits device utilization via a self-implemented time-shard mechanism.
- Real-time Monitoring: Includes a built-in monitor for device utilization.
Related
- Project
- Project
- Project
- Project
- Project