Inferensys

Glossary

GPU Direct Storage (GDS)

GPU Direct Storage (GDS) is an NVIDIA technology that enables a GPU to access data directly from storage devices like NVMe SSDs, bypassing the CPU and host memory to dramatically reduce I/O latency and increase bandwidth.
Data scientist building training data pipeline on laptop, data preprocessing visible, technical workspace.
GPU MEMORY OPTIMIZATION

What is GPU Direct Storage (GDS)?

GPU Direct Storage (GDS) is a hardware and software architecture that enables a GPU to directly access data from storage devices, bypassing the CPU and host memory to dramatically reduce I/O latency.

GPU Direct Storage (GDS) is a direct memory access (DMA) protocol that establishes a peer-to-peer data path between an NVIDIA GPU and an NVMe solid-state drive (SSD). This architecture eliminates the CPU bounce buffer traditionally required for I/O, where data must first be copied from storage into host RAM before being transferred to GPU memory. By bypassing this extra copy, GDS reduces latency, frees host memory bandwidth, and significantly increases effective data throughput for data-intensive workloads like deep learning training, scientific simulation, and high-performance analytics.

The technology relies on the NVIDIA GPUDirect framework and requires compatible hardware, including modern GPUs (Ampere architecture or later), NVMe SSDs, and a system platform that supports the PCIe peer-to-peer standard. For software, it integrates with standard APIs like CUDA and filesystem drivers. The primary benefit is slashing the I/O bottleneck for workflows where the GPU is the primary data consumer, enabling near-storage-speed data loading directly into GPU memory. This is a key technique in GPU memory optimization, working alongside Unified Virtual Memory (UVM) and demand paging to manage large datasets that exceed physical GPU memory capacity.

GPU MEMORY OPTIMIZATION

Key Technical Features of GDS

GPU Direct Storage (GDS) is a hardware-software stack that enables a direct data path between NVMe storage and GPU memory. This section details its core architectural components and performance mechanisms.

01

Direct Memory Access (DMA) Engine Bypass

GDS's foundational feature is the Direct Memory Access (DMA) engine bypass. In a traditional I/O path, data must travel from storage to the CPU's system memory via the PCIe bus, and then be copied again to GPU memory via a DMA engine. GDS establishes a direct memory access (DMA) path from the NVMe storage device to the GPU's memory, eliminating the intermediate bounce through host RAM. This reduces latency by removing a full memory copy and lowers CPU utilization by offloading the data movement task from the CPU to the storage and GPU hardware.

  • Traditional Path: NVMe SSD -> PCIe -> Host RAM -> DMA Engine -> PCIe -> GPU RAM.
  • GDS Path: NVMe SSD -> PCIe -> GPU RAM.
02

Peer-to-Peer (P2P) PCIe Transactions

This feature leverages PCIe peer-to-peer (P2P) capabilities. Normally, all PCIe traffic is routed through the root complex (typically the CPU). GDS enables a direct peer-to-peer transaction between the NVMe controller (a PCIe device) and the GPU (another PCIe device) on the same PCIe switch fabric. The data transfer is managed by the two endpoint devices without involving the root complex. This requires system BIOS and platform support but is critical for achieving the lowest possible latency and freeing the CPU from I/O management duties for data-intensive workloads like training on massive datasets or loading large neural network checkpoints.

03

cuFile API & Compatibility

The cuFile API is the software interface for GDS. It provides a set of CUDA library calls (e.g., cuFileRead, cuFileWrite) that applications use to initiate direct transfers. A key feature is its compatibility mode, which allows applications to use the same API calls regardless of whether the underlying system has GDS hardware support. If GDS is unavailable, the calls fall back to a standard, CPU-buffered path seamlessly. This ensures developer adoption isn't gated by hardware requirements. The API integrates with standard file I/O libraries like fopen/fread via driver-level interception, allowing legacy applications to benefit from GDS with minimal code changes when linked against the cuFile library.

04

GPUDirect Storage (GDS) Pinned Memory

While GDS aims to bypass host memory, certain operations or system configurations may still require its use. GDS Pinned Memory (or GDS-buffer ) is a specialized allocation of page-locked host memory that is optimized for use with the GDS driver. When data must temporarily reside in host memory, using this specially allocated buffer minimizes driver overhead and ensures optimal alignment for the remaining DMA transfers to the GPU. It is more efficient than standard cudaMallocHost for GDS workflows. This is often used during the compatibility fallback path or when preprocessing data on the CPU before a final transfer to the GPU.

05

Asynchronous Overlapped I/O and Compute

GDS operations are designed to be asynchronous and non-blocking. An application can issue a cuFileReadAsync call, which returns control to the program immediately while the direct data transfer occurs in the background on the PCIe bus. This allows the GPU's compute engines (SMs) to continue processing other data concurrently with the I/O operation, effectively overlapping I/O and compute. This is managed using CUDA streams, where I/O tasks and compute kernels are enqueued into the same or different streams, enabling fine-grained control over concurrency and dependencies. This overlap is essential for hiding the latency of loading the next batch of data in a training pipeline.

06

Multi-GPU and Multi-Path Scaling

GDS is designed for scalable, multi-GPU systems. A single storage namespace (e.g., a large NVMe array) can serve data directly to multiple GPUs simultaneously. Each GPU can establish its own independent DMA path from storage. When combined with a high-bandwidth storage fabric (like NVMe-oF), this allows aggregate I/O bandwidth to scale nearly linearly with the number of GPUs, preventing the storage subsystem from becoming a bottleneck in large-scale training clusters. This feature is critical for distributed data-parallel training, where each GPU needs rapid access to different shards of the global dataset.

TECHNICAL OVERVIEW

How GPU Direct Storage Works: The Data Path Bypass

GPU Direct Storage (GDS) is a direct memory access (DMA) protocol that enables a GPU to read and write data directly to and from storage devices, bypassing the CPU and host memory to eliminate a major I/O bottleneck.

The traditional data path forces data from an NVMe SSD through the CPU and into host RAM before a final copy to GPU memory. GDS establishes a direct data path from the storage device to the GPU using the PCI Express bus. This is achieved via a DMA engine on the GPU and an NVIDIA GPUDirect Storage driver that coordinates with the OS and storage drivers. The bypass removes the CPU as a middleman and halves the number of data copies, dramatically reducing latency and freeing CPU cycles for computation.

For this direct transfer to occur, data must reside in page-locked (pinned) host memory or a filesystem that supports the DAX (Direct Access) extension, like NVIDIA's GPUDirect Storage-enabled NVIDIA Magnum IO or compatible Linux kernels. The technology requires specific hardware support, including an NVIDIA Ampere or later GPU, a compatible NVMe SSD, and a system motherboard that supports PCIe peer-to-peer transactions. The primary benefit is a massive increase in effective I/O bandwidth for data-intensive workloads like deep learning training, scientific simulation, and large-scale data analytics.

GPU MEMORY OPTIMIZATION

Primary Use Cases for GPU Direct Storage

GPU Direct Storage (GDS) is a technology that enables a GPU to directly access data from storage devices, bypassing the CPU and host memory. Its primary use cases are in data-intensive workloads where I/O latency and bandwidth are critical bottlenecks.

02

High-Performance Data Analytics & Simulation

Scientific computing and analytics workloads involving massive arrays benefit from GDS. It allows GPUs to process data in-place on storage or load only necessary chunks, crucial for:

  • Computational Fluid Dynamics (CFD) and finite element analysis with huge mesh files.
  • Genomic sequence analysis where reference genomes and read data are voluminous.
  • Financial risk modeling using multi-dimensional time-series data.
  • Climate and weather simulation data post-processing and visualization.
03

Inference on Massive Context Windows

For inference tasks requiring context beyond GPU memory—like long document analysis, video processing, or enterprise RAG—GDS enables dynamic, on-demand data fetching. This supports:

  • Retrieval-Augmented Generation (RAG) with large, proprietary knowledge bases stored on fast SSDs.
  • Long-context language models that need to access relevant document segments without full pre-loading.
  • Multi-modal inference combining large image, video, and text contexts.
04

Real-Time Video & Media Processing

Processing high-resolution, high-frame-rate video streams or large image datasets requires sustained high bandwidth. GDS provides a direct data path from storage to GPU compute engines for:

  • AI-powered video analytics (e.g., object detection, facial recognition) on archived footage.
  • Content creation and rendering where assets like textures and 3D models are streamed.
  • Medical imaging pipelines analyzing high-resolution MRI or CT scans directly from archival storage.
05

Accelerated Database & Data Lake Queries

GPU-accelerated databases and data processing frameworks use GDS to bypass host memory, reducing query latency. This is key for:

  • Apache Spark RAPIDS and other GPU-accelerated SQL engines.
  • Parquet/ORC file processing where columnar data is filtered and aggregated on the GPU.
  • Vector database operations where nearest neighbor searches are performed on embeddings stored on NVMe.
06

System Architecture & Complements

GDS is not used in isolation. Its effectiveness depends on and complements other GPU memory optimization techniques:

  • Unified Virtual Memory (UVM): GDS can populate GPU memory pages on-demand, integrated with UVM's page faulting mechanism.
  • Peer-to-Peer (P2P) over NVLink: Data loaded via GDS can be directly shared between GPUs.
  • Memory Tiering: GDS acts as the fastest tier for storage, integrated into a hierarchy with GPU HBM and CPU RAM.
  • Demand Paging: GDS operations are often triggered by GPU page faults for non-resident data.
GPU DATA PATH COMPARISON

GDS vs. Traditional I/O vs. Zero-Copy

A comparison of data transfer methodologies between storage, host memory, and GPU device memory, highlighting the architectural differences and performance implications for data-intensive workloads.

Feature / MetricGPU Direct Storage (GDS)Traditional I/O (Buffered)Zero-Copy (Pinned Host Memory)

Primary Data Path

Storage → GPU (Direct)

Storage → CPU/RAM → GPU

Storage → CPU/RAM (GPU Access)

CPU Bypass for I/O

Host Memory Buffer

Explicit Device Copy

Requires Pinned Memory

I/O Bandwidth Limit

Drive/PCIe Limit

CPU/RAM Bandwidth

PCIe & RAM Bandwidth

Optimal Use Case

Large Dataset Streaming (Training, HPC)

General-Purpose Compute

Frequent Small, Random Access

Memory Pressure

Minimal on Host

High on Host (Double Buffering)

High on Host (GPU can page fault)

Latency Profile

Lowest (Direct Path)

Highest (Multiple Copies & CPU)

Medium (No Copy, but PCIe latency)

API/Driver Support

NVIDIA Driver, cuFile

Standard POSIX/stdio

CUDA Unified Memory (UVM)

GPU DIRECT STORAGE (GDS)

Frequently Asked Questions

GPU Direct Storage (GDS) is a critical technology for eliminating I/O bottlenecks in data-intensive AI and HPC workloads. This FAQ addresses its core mechanisms, requirements, and practical applications.

GPU Direct Storage (GDS) is a direct memory access (DMA) protocol that enables NVIDIA GPUs to read and write data directly to and from storage devices like NVMe SSDs, bypassing the CPU and system memory (RAM).

It works by establishing a Direct Memory Access (DMA) path from the storage device's controller to the GPU's memory. When an application requests data, the driver sets up a descriptor for the transfer. The storage device then uses the PCI Express (PCIe) bus to place the data directly into the GPU's memory, or reads data directly from it. This eliminates two major bottlenecks: the need to stage data in CPU RAM and the CPU's involvement in the copy operation. The key enabling technologies are the NVIDIA GPUDirect Storage driver and compatible storage hardware that supports the necessary peer-to-peer DMA capabilities.

Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.