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. Тя разрешава употреба за публични изследвания, образование и лични цели, но забранява търговско и военно приложение, както и обучение на AI модели на базата на изходния код.
Източник: linux.org.ru
