Ускорение на GPU

Гибридный CPU+GPU режим для видеокарт NVIDIA и AMD.

Что это даёт

На расчётах RANS (вязкий) с сетками до 500 тысяч ячеек перенос части вычислений на GPU даёт ускорение в 5-10 раз по сравнению с чистым CPU. На простых сетках (Euler, 50 тысяч ячеек) ускорение может быть 15-20-кратным.

Например, расчёт одной точки поляры, который на 6 ядрах CPU занимает 10 минут, на RTX 3060 с гибридным режимом занимает 1-2 минуты. Полная поляра из 7 точек — 7-15 минут вместо 70.

Требования

Видеокарта
NVIDIA GeForce RTX 20xx / 30xx / 40xx, минимум 4 ГБ видеопамяти. Или AMD Radeon RX 6000/7000 с поддержкой ROCm (5.x и новее).
SU2, собранный с GPU-поддержкой
Официальные бинарники SU2 на su2code.github.io собираются без CUDA/HIP. Для GPU-режима нужна самостоятельная сборка:
git clone https://github.com/su2code/SU2.git
cd SU2
meson setup build -Dwith-cuda=enable
ninja -C build install

Для AMD ROCm аналогично: meson setup build -Denable-hip=enable.

Включение

Откройте Solver Settings → Производительность и ресурсы. В разделе «Вычислитель» выберите «CPU + GPU (гибридный SU2)». Появится слайдер «Нагрузка GPU» (0-100%). По умолчанию 50% — половина работы на GPU, половина на CPU.

Нажмите «Применить», затем запустите расчёт.

Как это работает

AeroOpt автоматически выбирает стратегию запуска в зависимости от того, что поддерживает ваш MPI:

  1. Microsoft MPI с поддержкой -gpu. AeroOpt запускает SU2 командой mpiexec -n N -gpu 0,1,2,3 SU2_CFD.exe config.cfg. Переменная OMP_TARGET_OFFLOAD=MANDATORY устанавливается автоматически.
  2. OpenMPI (Linux). OpenMPI не поддерживает опцию -gpu. AeroOpt пробует её, ловит ошибку «unrecognized option», затем перезапускает SU2 в режиме OpenMP target offload (OMP_TARGET_OFFLOAD=MANDATORY + ACC_DEVICE_TYPE=NVIDIA или AMD).
  3. SU2 без GPU-сборки. Если SU2 собрана без CUDA/HIP, AeroOpt увидит ошибку «GPU support not compiled» в логе и автоматически переключится на чистый CPU. Расчёт продолжится как обычно.

В логе вы увидите, какая стратегия была выбрана:

Гибридный режим (mpiexec-gpu): GPU 50%, ядер CPU 6
  MPI: msmpi
[16:42:13] Запуск: mpiexec -n 6 -gpu 0,1,2,3,4,5 SU2_CFD.exe config.cfg

Когда GPU-режим не поможет

Диагностика

В Solver Settings нажмите кнопку «Проверить связь» — AeroOpt покажет, какие GPU обнаружены, через nvidia-smi или WMI.

Если GPU не виден: