FluidX3D v3.7

good-penguin.png

FluidX3D 3.7 — пакет для вычислительной гидродинамики, использующий метод решёточных уравнений Больцмана (LBM) и OpenCL. Проект позиционируется как высокопроизводительный и экономный по памяти CFD-пакет, способный работать на GPU и CPU разных производителей через OpenCL.

Главным изменением версии 3.7 стала оптимизация ядра отрисовки изоповерхности Q-критерия (graphics_q()), используемой для визуализации вихревых структур в потоке. В прежней реализации ядро загружало из видеопамяти тяжёлый шаблон из 32 трёхмерных скоростей для каждой ячейки сетки. Теперь рабочая группа потоков размером 8×8×8 загружает блок 11×11×11 скоростей в 16 КБ локальной памяти первого уровня, после чего соседние потоки переиспользуют эти данные. По оценке автора, это сокращает число загрузок из VRAM примерно в 12 раз — до 2,6 скоростей на ячейку — и переводит ядро из режима, ограниченного пропускной способностью памяти, в режим, ограниченный вычислениями.

Практический выигрыш зависит от конкретного оборудования. На новых GPU с развитой системой кэширования ручная оптимизация локальной памяти может почти не дать прироста или даже немного снизить частоту кадров. На части старых GPU автор зафиксировал ускорение до двух раз, что особенно заметно в интерактивном графическом режиме FluidX3D. Например, в опубликованных тестах NVIDIA Titan Xp ускорилась с 7 до 13 кадров/с, Intel UHD 770 — с 8 до 14 кадров/с в одном из режимов, а Intel Arc A750 — с 22 до 26 кадров/с.

Для старых встроенных GPU предусмотрен автоматический откат на прежнюю реализацию: часть таких устройств не поддерживает рабочие группы размером 512 потоков или имеет менее 16 КБ локальной памяти L1. В этих случаях FluidX3D продолжит использовать старый вариант ядра, сохраняя совместимость.

Также в этой версии упрощены условия для VR-отрисовки, отключено разворачивание циклов в растеризации для уменьшения «спагетти» в ассемблерном выводе, добавлена микрооптимизация в convert_triangle/_interpolated(), а в адаптере OpenCL исправлен вывод ошибки при пустом имени ядра и размере рабочей группы.

FluidX3D включает встроенный интерактивный 3D-рендерер, который позволяет просматривать поля скорости, линии тока, изоповерхности Q-критерия и срезы прямо во время расчёта, без обязательного экспорта в отдельный инструмент постобработки. FluidX3D В проекте также заявлены поддержка свободной поверхности, тепловой конвекции, модели турбулентности Smagorinsky-Lilly, отслеживания частиц, экспорта VTK и работы с несколькими GPU.

Отдельно стоит отметить лицензионный статус: исходный код FluidX3D открыт и доступен на GitHub, однако лицензия проекта не является свободной в строгом смысле OSI/FSF. Она разрешает использование для публичных исследований, образования и личных целей, но запрещает коммерческое и военное применение, а также обучение ИИ-моделей на исходном коде.

>>> Источник

Linux.org.ru прочитано 1943 раза