
Вышло обновление FluidX3D до версии 3.7. Это специализированный пакет для вычислительной гидродинамики (CFD), который использует метод решёточных уравнений Больцмана (LBM) и работает через стандарт OpenCL. Проект позиционируется как решение с высокой производительностью и эффективным потреблением памяти, способное эффективно функционировать на GPU и CPU различных производителей.
Оптимизация визуализации
Ключевым нововведением версии 3.7 стала доработка ядра отрисовки изоповерхности Q-критерия, которая необходима для визуализации вихревых структур в потоках жидкости и газа. Ранее при расчётах ядро обращалось к видеопамяти для загрузки тяжёлого шаблона из 32 трёхмерных скоростей для каждой ячейки.
Разработчики изменили подход: теперь рабочая группа потоков размером 8×8×8 загружает блок 11×11×11 скоростей в 16 КБ локальной памяти первого уровня (L1). Благодаря этому соседние потоки могут повторно использовать данные. По словам автора, это решение позволило сократить количество обращений к VRAM примерно в 12 раз (до 2,6 скоростей на ячейку), переведя ядро из состояния, ограниченного пропускной способностью памяти, в состояние, ограниченное вычислительными мощностями.
Результаты производительности
Эффективность оптимизации зависит от архитектуры графического ускорителя:
- На современных GPU с развитыми системами кэширования прирост может быть незначительным или отсутствовать.
- На устаревшем оборудовании автор зафиксировал значительный прогресс: например, скорость отрисовки на NVIDIA Titan Xp выросла с 7 до 13 кадров/с, на встроенной графике Intel UHD 770 — с 8 до 14 кадров/с, а на дискретной Intel Arc A750 — с 22 до 26 кадров/с.
Для сохранения стабильности на старых или маломощных GPU предусмотрен автоматический откат к предыдущей версии ядра, если устройство не поддерживает группы по 512 потоков или имеет менее 16 КБ локальной памяти L1.
Дополнительные улучшения и возможности
В релизе 3.7 также реализованы следующие изменения:
- Упрощены условия для отрисовки в VR.
- Отключено разворачивание циклов в растеризации, что позволило сократить «спагетти-код» в ассемблерном выводе.
- Добавлена микрооптимизация функций convert_triangle и _interpolated.
- Исправлены ошибки вывода в адаптере OpenCL при пустом имени ядра или некорректном размере рабочей группы.
FluidX3D по-прежнему оснащён встроенным интерактивным 3D-рендерером, позволяющим анализировать поля скоростей, линии тока и сечения в процессе расчёта без экспорта данных во внешнее ПО. Также поддерживаются модели турбулентности Smagorinsky-Lilly, тепловая конвекция, работа с несколькими GPU и экспорт в формат VTK.
Лицензия
Исходный код проекта открыт и опубликован на GitHub. Важно отметить, что лицензия FluidX3D не является полностью свободной (не соответствует стандартам OSI/FSF): она разрешает использование в образовательных, личных и научных целях, но строго запрещает коммерческое применение, военные разработки и обучение ИИ-моделей на основе предоставленного кода.






