Прорыв в производительности: цифры и метрики
NVIDIA представила GQE (GPU Query Engine) как эталонную архитектуру для выполнения SQL-запросов на современных GPU. Ключевые результаты тестирования на бенчмарке TPC-H SF1000 демонстрируют впечатляющие показатели:
- 7.5x — совокупное ускорение по сравнению с передовыми CPU-базами данных.
- до 25.5x — максимальное ускорение для отдельных запросов.
Достигнутый результат стал возможен благодаря использованию аппаратных особенностей NVIDIA, таких как HBM, NVLink-C2C и выделенные декомпрессионные движки в системе NVIDIA GB200 NVL4.
Архитектура: три слоя оптимизации
GQE построена на базе библиотеки NVIDIA cuDF и других компонентов CUDA-X (CCCL, nvSHMEM). Архитектура разделена на три логических слоя:
- Query Layer: Принимает планы запросов в формате Substrait (открытый стандарт), что позволяет экспортировать планы из существующих СУБД (например, Apache DataFusion) и выполнять их на GPU.
- Data Layer: Управляет хранением и перемещением данных. Поддерживает GPU-память, CPU-память и диск. Данные передаются чанками (chunks) по требованию, что позволяет не загружать весь датасет в VRAM.
- Execution Layer: Выполняет физический план запроса через граф задач (task graph), используя оптимизированные CUDA C++ операторы из cuDF.
Гибридное сжатие и декомпрессия
Одной из главных проблем GPU-баз данных является пропускная способность памяти. GQE решает её через гибридную стратегию сжатия, используя библиотеку NVIDIA nvCOMP и аппаратный декомпрессор Blackwell. Система автоматически выбирает алгоритм для каждой колонки, балансируя между коэффициентом сжатия и скоростью декомпрессии.
| Алгоритм/Технология | Роль в GQE | Преимущество |
|---|---|---|
| NVIDIA nvCOMP | Библиотека сжатия/декомпрессии | Аппаратно-ускоренная декомпрессия, поддержка LZ4 и других форматов |
| Blackwell Decompression Engine | Аппаратный блок в GB200 | Декомпрессия без нагрузки на SM (Streaming Multiprocessors) |
| Partition Pruning | Отсечение данных | Использование zone maps для передачи только нужных данных |
Оркестрация передачи данных: Pipeline Parallelism
GQE минимизирует задержки за счет конвейерной обработки (pipeline parallelism). Передача данных от CPU к GPU разбита на четыре перекрывающихся этапа:
- Stage 0: Планирование на хосте (вычисление диапазонов памяти, аллокация буферов).
- Stage 1: Передача данных H2D (Host-to-Device) через NVLink/PCIe.
- Stage 2: Декомпрессия данных на GPU.
- Stage 3: Выполнение CUDA-ядер для обработки запроса.
Использование cudaMemcpyBatchAsync и конвейерных потоков позволяет скрыть задержки передачи и декомпрессии за вычислениями, обеспечивая максимальную загрузку GPU.
Почему это важно?
Раньше GPU-ускоренные базы данных часто упирались в узкое горлышко I/O и памяти. GQE показывает, что при правильной архитектуре (отказ от полного копирования данных в VRAM, использование аппаратной декомпрессии и стандартизация планов запросов через Substrait) можно достичь производительности, недостижимой для CPU-решений. Это открывает путь к аналитике над терабайтами данных в реальном времени без необходимости в экстремально дорогих CPU-кластерах.
Источник: NVIDIA dev blog ↗
