# NVIDIA Shows Python Developers How to Verify GPUDirect Storage Reads

By Simon Yoon

Canonical URL: https://www.tokenpost.com/news/technology/38821
Published: 2026-10-23T08:15:05.000Z
Updated: 2026-10-23T08:15:05.000Z
Section: Technology

> A tutorial’s 1 GiB sample read produced 256 `nvfs` operations and no `posix` operations. The counters track routing, not speed.

NVIDIA published a Python guide Oct. 22 that shows developers how to trace file reads into GPU memory, helping them distinguish GPUDirect Storage transfers from CPU-staged paths.

KvikIO exposes cuFile’s filesystem API for GPUDirect Storage through Python and C++ interfaces. KvikIO first decides whether to send a request to cuFile or use its own POSIX backend. If cuFile receives the request, it separately selects a path based on system support, filesystem and configuration. Compatibility paths use CPU system memory.

The tutorial uses cuFile statistics to inspect routing. Its sample reads a 1 GiB file into GPU memory, with KvikIO dividing the request into 256 operations of 4 MiB each. The reported counters were n=256, nvfs=256 and posix=0: all 256 operations in that run used the nvidia-fs path, while none used cuFile’s POSIX compatibility path.

The route can change with settings. In AUTO compatibility mode, KvikIO tries cuFile and falls back to its own POSIX backend if cuFile is unavailable. On the tutorial system, KvikIO reported a 16 KiB GDS threshold; reads below that threshold went directly through KvikIO’s POSIX path. Setting KVIKIO_COMPAT_MODE=off makes KvikIO call cuFile, while CUFILE_FORCE_COMPAT_MODE=true routes those operations through cuFile’s POSIX compatibility path. Setting KVIKIO_COMPAT_MODE=on bypasses cuFile and uses KvikIO’s CPU-staged POSIX backend.

The example ran on an x86_64 system with an NVIDIA H100 GPU, CUDA 13.3, cuFile 1.18 and local NVMe storage formatted with ext4. The setup also used a PIX GPU-to-NVMe connection, with IOMMU and ACS disabled and the nvidia-fs kernel module loaded. The counters describe the route on that configured system; they do not compare throughput or latency or establish results for other systems and workloads.


