FluidX3D 3.7 – balík pre výpočtovú dynamiku tekutín využívajúci mriežkovú Boltzmannovu metódu (LBM) a OpenCL. Projekt je prezentovaný ako vysoko výkonný a pamäťovo efektívny balík CFD schopný bežať na GPU a CPU od rôznych výrobcov prostredníctvom OpenCL.
Hlavnou zmenou vo verzii 3.7 je optimalizácia jadra na vykresľovanie izoploch s Q-kritériom (graphics_q()), ktoré sa používa na vizualizáciu vírových štruktúr v prúdení. V predchádzajúcej implementácii jadro načítavalo rozsiahlu šablónu s 32 trojrozmernými rýchlosťami z videopamäte pre každú bunku mriežky. Teraz pracovná skupina vlákien 8x8x8 načíta blok rýchlostí 11x11x11 do 16 KB lokálnej pamäte L1, po čom susedné vlákna tieto dáta opätovne použijú. Podľa autora sa tým znižuje počet načítaní VRAM približne 12-krát – na 2,6 rýchlosti na bunku – a jadro sa prepína z režimu viazaného na pamäť do režimu viazaného na výpočty.
Praktické zrýchlenie závisí od konkrétneho hardvéru. Na novších GPU s pokročilým ukladaním do vyrovnávacej pamäte môže manuálna optimalizácia lokálnej pamäte priniesť malý alebo žiadny zisk, alebo dokonca mierny pokles snímkovej frekvencie. Na niektorých starších GPU autor zaznamenal až dvojnásobné zrýchlenie, obzvlášť viditeľné v interaktívnom grafickom režime FluidX3D. Napríklad v publikovaných testoch sa NVIDIA Titan Xp zrýchlil zo 7 na 13 fps, Intel UHD 770 z 8 na 14 fps v jednom režime a Intel Arc A750 z 22 na 26 fps.
Pre staršie integrované grafické procesory je k dispozícii automatický návrat k predchádzajúcej implementácii: niektoré z týchto zariadení nepodporujú 512-vláknové pracovné skupiny alebo majú menej ako 16 KB lokálnej pamäte L1. V týchto prípadoch bude FluidX3D naďalej používať staršiu verziu jadra a zachovať kompatibilitu.
Táto verzia tiež obsahuje zjednodušené podmienky vykresľovania VR, zakázané odvíjanie slučky pri rasterizácii na zníženie efektu „špaget“ vo výstupe zostavy, pridanú mikrooptimalizáciu pre convert_triangle/_interpolated() a opravenú chybu v adaptéri OpenCL, keď bol názov jadra a veľkosť pracovnej skupiny prázdny.
FluidX3D obsahuje vstavaný interaktívny 3D renderer, ktorý umožňuje zobraziť rýchlostné polia, prúdnice, izoplochy Q-kritéria a rezy priamo počas výpočtov bez nutnosti exportu do samostatného nástroja na následné spracovanie. FluidX3D Projekt tiež tvrdí, že podporuje voľné povrchy, tepelnú konvekciu, turbulentný model Smagorinsky-Lilly, sledovanie častíc, export VTK a podporu viacerých GPU.
Za zmienku stojí stav licencie: zdrojový kód FluidX3D je otvorený a dostupný na GitHub, avšak projektová licencia Nie je zadarmo v užšom zmysle slova OSI/FSF. Povoľuje použitie na verejný výskum, vzdelávanie a osobné účely, ale zakazuje komerčné a vojenské použitie, ako aj trénovanie modelov umelej inteligencie pomocou zdrojového kódu.
Zdroj: linux.org.ru
