Copied


NVIDIA подробно описывает чтения Python-пути к памяти GPU с помощью GPUDirect Storage

Peter Zhang   Oct 22, 2026 17:04 0 Min Read


NVIDIA опубликовала техническое руководство по 2026-10-22 , объясняющее, как приложения на Python могут читать данные напрямую в память GPU с помощью Magnum IO GPUDirect Storage, а также как проверить, использовал ли чтение ускоренный путь или запасной вариант с процессорным этапом. В посте говорится, что различие важно, потому что KvikIO и cuFile принимают отдельные решения о маршрутизации до того, как запрос попадёт в хранилище.

Как выбирается путь

По данным NVIDIA, GPUDirect Storage создаёт прямой путь данных между поддерживаемым хранилищем и GPU-памятью, избегая ненужного этапирования через память CPU и снижая общее использование CPU. В Python-стеке, описанном в посте, KvikIO расположен над cuFile: KvikIO решает, вызывать ли cuFile вообще, а cuFile — по ускоренному пути nvidia-fs или по пути совместимости, проходящем данные через память хоста.

Компания утверждает, что доступ к cuFile API сам по себе не доказывает, что ускоренный путь был использован. Это различие является центральным в учебнике, который показывает, как проверять стандартные параметры KvikIO, подтверждать компоненты GDS с помощью gdscheck.py, а затем использовать gds_stats для определения, учитываются ли операции в nvfs или posix.

Что использовалось в учебнике

NVIDIA утверждает, что пример был протестирован на x86_64 системе с H100 GPU, CUDA 13.3 и cuFile 1.18. В установке также использовалось локальное NVMe-устройство, отформатированное с ext4, PIX-соединение между GPU и NVMe, отключённые IOMMU и ACS, а также модуль ядра nvidia-fs загружен для обеспечения ускоренного пути.

В примере с Python руководство создаёт файл 1 GiB, выделяет массив CuPy в памяти GPU и считывает файл в этом буфере с помощью KvikIO. В посте говорится, что KvikIO отчитал compat_mode как AUTO и gds_threshold 16 KiB в обучающей системе. AUTO советует KvikIO сначала попробовать cuFile, а если cuFile недоступен, вернуться к POSIX, а чтения ниже порога — использовать путь POSIX напрямую.

Проверка с помощью статистики cuFile

В статье говорится, что один подтверждение фактического пути передачи — включить CUFILE_STATS_LEVEL=3 и проверить запущенный процесс с помощью gds_stats. В примере с учебником стандартный размер задачи KvikIO 4 МиБ делил запрос 1 ГиБ на 256 чтения, и статистика показала n=256, nvfs =256 и posix=0, что указывает на то, что все операции использовали путь nvidia-fs.

В посте также сравниваются слои путём изменения настроек. При KVIKIO_COMPAT_MODE=off KvikIO всё ещё использует cuFile, и cuFile может быть вынужден перейти в режим совместимости с CUFILE_FORCE_COMPAT_MODE=true, который перемещает операции под posix. С KVIKIO_COMPAT_MODE=on KvikIO полностью обходит cuFile и выполняет чтение через собственный CPU-стадированный POSIX бэкенд.

Планирование и размер запросов cuFile

NVIDIA утверждает, что cuFile имеет собственные настройки выполнения в cufile.json, которые влияют на разбиение и планирование запросов, включая execution.parallel_io, execution.max_io_threads, execution.min_io_threshold_size_kb, execution.max_request_parallelism и execution.max_io_queue_depth. В примере конфигурации четыре рабочие потоки cuFile, max_request_parallelism настроены на четыре, а min_io_threshold_size_kb на 8192 означало, что чтение 1 GiB можно было дополнительно разделить после получения cuFile.

В руководстве отмечается, что если KVIKIO_TASK_SIZE настроен на 1 ГиБ, KvikIO отправляет один большой запрос cuFile, который затем использует свой незарегистрированный путь планирования буфера, поскольку буфер-получатель явно не зарегистрирован. В посте говорится, что в данном случае cuFile ограничивает запрос четыре частями, каждая 256 МиБ, и что эти части являются запланированными рабочими единицами, а не отдельными переносами хранилища. Также говорится, что целевой планирование 8 МиБ будет иметь значение для запроса 16 МиБ, который cuFile разделит на два 8 МиБ частей.

Почему NVIDIA делает акцент на стеке

В статье учебник рассматривается в контексте более широких требований по перемещению данных ИИ, ссылаясь на индекс 2025 Stanford ИИ, согласно которому вычисления для заметных ИИ моделей удваивались примерно каждые пять месяца, а обучающие наборы данных для больших языковых моделей удваивались примерно каждые восемь месяца. NVIDIA также отмечает, что Python был основным интерфейсом приложений для многих ИИ проектов, а cuFile остаётся C API, что делает KvikIO мостом между кодом на Python и уровнем ускорения хранения.

Согласно публикации, KvikIO входит в NVIDIA CUDA-X для науки о данных и имеет корни в более ранних работах cuDF по ускоренному внедрению Parquet и ORC. Компания утверждает, что тот же путь хранения с тех пор использовался в рабочих процессах cuCIM цифровой патологии, cuPhoton xDataReader и GPU-ускоренном Presto, но сам учебник сосредоточен на том, как подтвердить, действительно ли чтение на Python выбрал ускоренный путь.

В посте не присваиваются прирост производительности каждой конфигурации. Вместо этого подчеркивается, что работа по прямому пути зависит от совместимого оборудования, драйверов, файловых систем, топологии и настроек, а неподдерживаемые конфигурации могут вернуться к режиму совместимости. NVIDIA советует пользователям проверять свои рабочие нагрузки с помощью gds_stats, а не предполагать ускорение.


Read More