FluidX3D 3.7 – paket za računalnu hidrodinamiku koji koristi metodu rešetkastih Boltzmannovih jednadžbi (LBM) i OpenCL. Projekt se pozicionira kao visoko performantni i ekonomični CFD paket, sposoban raditi na GPU i CPU različitih proizvođača putem OpenCL.
Glavna promjena verzije 3.7 je optimizacija jezgre za prikaz izopovršine Q-kriterija (graphics_q()), koja se koristi za vizualizaciju vortex struktura u toku. U prethodnoj verziji jezgra je učitavala teški šablon od 32 trodimenzionalne brzine za svaku ćeliju mreže iz video memorije. Sada radna grupa niti veličine 8×8×8 učitava blok 11×11×11 brzina u 16 KB lokalne memorije prvog nivoa, nakon čega susjedne niti ponovo koriste te podatke. Prema procjeni autora, to smanjuje broj učitavanja iz VRAM-a otprilike 12 puta — do 2,6 brzina po ćeliji — i prebacuje jezgru iz režima ograničenog propusnošću memorije u režim ograničenih izračunavanja.
Praktična dobit ovisi o konkretnom hardveru. Na novim GPU-ima s razvijenim sistemom keširanja, ručna optimizacija lokalne memorije možda neće donijeti značajne dobitke ili čak malo smanjiti broj sličica u sekundi. Na nekim starijim GPU-ima autor je primijetio ubrzanje do dva puta, što je posebno izraženo u interaktivnom grafičkom režimu FluidX3D. Na primjer, u objavljenim testovima NVIDIA Titan Xp ubrzala je s 7 na 13 sličica/s, Intel UHD 770 — s 8 na 14 sličica/s u jednom od režima, dok je Intel Arc A750 — s 22 na 26 sličica/s.
Za starije ugrađene GPU-e predviđen je automatski povratak na prethodnu implementaciju: dio takvih uređaja ne podržava radne grupe veličine 512 niti ili ima manje od 16 KB lokalne memorije L1. U tim slučajevima FluidX3D će nastaviti koristiti staru verziju jezgre, zadržavajući kompatibilnost.
Također su u ovoj verziji pojednostavljeni uvjeti za VR-renderiranje, isključeno je razvijanje petlji u rasterizaciji kako bi se smanjila "špageti" u assembler ispisu, dodana je mikroopтимizacija u convert_triangle/_interpolated(), a u OpenCL adapteru ispravljen je ispis greške prilikom praznog imena jezgre i veličine radne grupe.
FluidX3D vključuje vgrajeni interaktivni 3D-render, ki omogoča ogled polj hitrosti, tokovnih linij, izopovršin Q-kriterija in rezov neposredno med izračunom, brez potrebe po izvozu v ločeno orodje za obdelavo. FluidX3D V projektu je prav tako napovedana podpora za prostorske površine, toplotno konvekcijo, modele turbulence Smagorinsky-Lilly, sledenje delcem, izvoz VTK in delo z več GPU-ji.
Posebej je treba omeniti licenčni status: izvorna koda FluidX3D je odprta in dostopna na GitHubu, vendar licenca projekta ni prosta v strogem smislu OSI/FSF. Dovoli uporabo za javne raziskave, izobraževanje in osebne namene, a prepoveduje komercialno in vojaško uporabo ter usposabljanje modelov umetne inteligence na izvorni kodi.
Izvor: linux.org.ru
