FluidX3D 3.7 – balík na výpočtovú hydrodynamiku, ktorý využíva metódu mriežkových Boltzmannových rovníc (LBM) a OpenCL. Projekt je pozicionovaný ako vysokovýkonný a pamäťovo úsporný CFD balík, schopný pracovať na GPU a CPU rôznych výrobcov prostredníctvom OpenCL.
Hlavnou zmenou verzie 3.7 bola optimalizácia jadra vykresľovania izoplochy Q-kritéria (graphics_q()), používaného na vizualizáciu vírových štruktúr v prúde. V predchádzajúcej implementácii jadro načítalo z grafickej pamäte ťažký šablónový súbor zo 32 trojrozmerných rýchlostí pre každú mriežkovú bunku. Teraz pracovná skupina prúdov o veľkosti 8×8×8 načíta blok 11×11×11 rýchlostí do 16 kB lokálnej pamäte prvého stupňa, po čom susedné prúdy znovu využijú tieto údaje. Podľa autora to zmenšuje počet načítaní z VRAM približne 12-krát — na 2,6 rýchlosti na bunku — a prevádza jadro z režimu obmedzeného šírkou pásma pamäte do režimu obmedzeného výpočtami.
Praktický zisk závisí od konkrétneho hardvéru. Na nových GPU s vyvinutým systémom cache môže manuálna optimalizácia lokálnej pamäte takmer nepriniesť zisk alebo dokonca mierne znížiť snímkovú frekvenciu. Na niektorých starších GPU autor zaznamenal zrýchlenie až dvojnásobne, čo je obzvlášť viditeľné v interaktívnom grafickom režime FluidX3D. Napríklad v publikovaných testoch NVIDIA Titan Xp zrýchlila z 7 na 13 snímok/s, Intel UHD 770 — z 8 na 14 snímok/s v jednom z režimov, a Intel Arc A750 — z 22 na 26 snímok/s.
Pre staré integrované GPU je zabezpečený automatický prechod na predchádzajúcu implementáciu: niektoré z týchto zariadení nepodporujú pracovné skupiny o veľkosti 512 prúdov alebo majú menej ako 16 kB lokálnej pamäte L1. V týchto prípadoch FluidX3D naďalej použije starú verziu jadra, aby zachoval kompatibilitu.
Taktiež v tejto verzii boli zjednodušené podmienky pre VR vykresľovanie, deaktivované rozvinovanie cyklov v rastrování na zníženie „špagetovania“ v assemblerovom výstupe, pridaná mikrooptimalizácia v convert_triangle/_interpolated(), a v adaptéry OpenCL bola opravená chyba výstupu pri prázdnom mene jadra a veľkosti pracovnej skupiny.
FluidX3D obsahuje integrovaný interaktívny 3D renderovač, ktorý umožňuje zobrazenie poľami rýchlosti, prúdnymi čiarami, izopovrchmi Q-kritéria a rezy priamo počas výpočtu, bez nutnosti exportu do samostatného postprocessingového nástroja. FluidX3D V projekte je taktiež uvedená podpora voľnej plochy, tepelnej konvekcie, modelu turbulence Smagorinsky-Lilly, sledovania častíc, exportu VTK a práce so viacerými GPU.
Samostatne stojí za zmienku licenčný status: zdrojový kód FluidX3D je otvorený a dostupný na GitHub, avšak licencia projektu nie je vo voľnom slova zmysle OSI/FSF. Umožňuje použitie pre verejné výskumy, vzdelávanie a osobné účely, ale zakazuje komerčné a vojenské použitie, ako aj tréning AI modelov na zdrojovom kóde.
Zdroj: linux.org.ru
