Результаты бенчмарков: GPU против CPU
В блоге NVIDIA Developer опубликованы детальные результаты тестирования GPU-ускоренного Presto на базе NVIDIA DGX B200 и GB200 NVL72. Ключевое преимущество технологии — радикальное снижение задержки (latency) для аналитических запросов. Тестирование проводилось на наборах данных TPC-H (масштабы 1K, 3K, 10K, 30K), где время выполнения включало парсинг SQL, оптимизацию плана и выполнение воркерами.
Сравнение показало, что однократный узел DGX B200 с 8 GPU превосходит многоузловые CPU-кластеры. При масштабе данных 1K (~1 ТБ) использование одного GPU дало ускорение в 2.5 раза, а все 8 GPU — в 8.2 раза по сравнению с 8-узловым кластером на Intel Xeon 6642Y. При увеличении объема данных до 3K (~3 ТБ) ускорение составило от 3.6x до 7.8x соответственно.
| Конфигурация | Масштаб данных | Сравнение с CPU-кластером | Ускорение |
|---|---|---|---|
| 1 GPU (DGX B200) | 1K (~1 ТБ) | vs 8 узлов Intel Xeon | 2.5x |
| 8 GPU (DGX B200) | 1K (~1 ТБ) | vs 8 узлов Intel Xeon | 8.2x |
| 3 GPU (DGX B200) | 3K (~3 ТБ) | vs 10 узлов Intel Xeon | 3.6x |
| 8 GPU (DGX B200) | 3K (~3 ТБ) | vs 10 узлов Intel Xeon | 7.8x |
Масштабирование на GB200 NVL72 и роль GPUDirect Storage
Для работы с большими объемами данных (масштабы 10K и 30K) использовался кластер NVIDIA GB200 NVL72. Система состоит из 18 узлов, каждый из которых содержит 2 CPU Grace, 4 GPU B200 и 4 сетевых адаптера ConnectX-7 (400 Гбит/с). Все GPU связаны через NVLink, что обеспечивает высокоскоростную коммуникацию. Для хранения данных применялась система IBM Storage Scale (20 узлов, 10 ПБ, пропускная способность ~4.5 ТБ/с).
Критическим компонентом стала технология NVIDIA GPUDirect Storage (GDS). Она позволяет передавать данные напрямую из хранилища в память GPU, минуя CPU и буферы системной памяти. Это устранило узкие места, связанные с NUMA-архитектурой и копированием данных через хост-процессор.
Оптимизации: как получили еще +64% скорости
Помимо аппаратных преимуществ, команда NVIDIA провела серию оптимизаций на уровне ПО и конфигурации кластера. Итоговое улучшение времени выполнения запросов за счет оптимизаций ввода-вывода и коммуникации составило 64%. Основные шаги включали:
- Включение GDS и увеличение размера I/O-задачи: переход с POSIX-чтений на device reads и увеличение размера задачи с 4 МБ до 16 МБ дало ускорение на ~30%.
- Увеличение количества I/O-потоков: переход с 4 на 16 потоков улучшил использование пропускной способности NVLink, добавив еще ~17% скорости.
- Ребатчинг и переписывание запросов: оптимизация размеров пакетов обмена и переписывание запроса Q11 снизило время простоя GPU. Это дало финальный прирост в 35%.
Кейс переписывания запроса Q11
Особое внимание уделено запросу Q11. Изначально как SELECT он выполнялся 50 секунд, при этом утилизация GPU составляла менее 5%. Причина — узкое место в передаче результатов от воркера к координатору через стандартный HttpExchange. Переписывание запроса в INSERT INTO позволило использовать GPU-парсер Parquet для записи результатов напрямую в IBM Storage Scale. Время выполнения сократилось до 2 секунд. В будущем NVIDIA планирует улучшить пропускную способность передачи результатов от воркера к координатору, чтобы избежать необходимости изменения SQL-запросов.
Источник: NVIDIA dev blog ↗
