How to Read Data into GPU Memory in Python with NVIDIA GPUDirect Storage
By Jakub Antkiewicz
•2026-10-23T13:06:32Z
NVIDIA KvikIO Bridges Python with High-Speed GPUDirect Storage
As AI models and datasets continue to expand at an exponential rate, the challenge of efficiently moving data from storage to accelerators has become a critical performance bottleneck. NVIDIA is directly addressing this issue with KvikIO, a library offering high-level Python and C++ interfaces for its Magnum IO GPUDirect Storage (GDS) technology. This development is significant as it makes high-performance, direct-to-GPU I/O accessible within the Python ecosystem, where the vast majority of modern AI development occurs, thereby reducing reliance on the lower-level cuFile C API.
The technology operates through a layered architecture where KvikIO sits above the cuFile library, which in turn manages the data path. This creates two distinct points of control: KvikIO first decides whether to use cuFile or a standard CPU-staged POSIX compatibility path, influenced by runtime settings like `KVIKIO_COMPAT_MODE`. If invoked, cuFile then makes a second decision, determining whether to use the accelerated `nvidia-fs` kernel module or its own CPU-based fallback. Developers can inspect and verify which path was taken using tools like `gds_stats` to ensure their workloads are optimally configured. The key components in this stack include:
- GPUDirect Storage (GDS): The core technology enabling a direct data path between storage and GPU memory.
- cuFile: The C library and API that provides application access to GDS for file system-based storage.
- KvikIO: The high-level Python and C++ library that simplifies the use of cuFile and adds its own layer of I/O control.
- nvidia-fs: The kernel module that facilitates the accelerated, direct data transfer path.
By simplifying access to GDS, KvikIO stands to accelerate a wide range of GPU-intensive applications within the NVIDIA CUDA-X ecosystem. Workloads in data science (cuDF), digital pathology (cuCIM), and analytics (GPU-accelerated Presto) are already leveraging the library to improve I/O performance. This strategic move lowers the barrier to entry for hardware acceleration, enabling a broader swath of AI developers and data scientists to eliminate storage bottlenecks and more effectively saturate increasingly powerful GPUs, ultimately shortening time-to-solution for both training and analysis pipelines.
By abstracting complex, low-level hardware optimizations into a high-level Python library, NVIDIA is ensuring its core performance advantages in GPU I/O are accessible to the broadest possible developer base, not just C/C++ specialists.