FluidX3D 3.7 – en beregningsbasert fluiddynamikkpakke som bruker gitter-Boltzmann-metoden (LBM) og OpenCL. Prosjektet er posisjonert som en høytytende og minneeffektiv CFD-pakke som kan kjøres på GPU-er og CPU-er fra forskjellige produsenter via OpenCL.
Hovedendringen i versjon 3.7 er optimaliseringen av Q-kriteriets isosurface-renderingskjerne (graphics_q()), som brukes til å visualisere virvelstrukturer i flyten. I den forrige implementeringen lastet kjernen inn en tung mal med 32 tredimensjonale hastigheter fra videominnet for hver gridcelle. Nå laster en 8x8x8-trådarbeidsgruppe en 11x11x11-hastighetsblokk inn i 16 KB lokalt L1-minne, hvoretter nabotråder gjenbruker disse dataene. Ifølge forfatteren reduserer dette antall VRAM-innlastinger med omtrent 12 ganger – til 2,6 hastigheter per celle – og går over i kjernen fra en minnebundet til en beregningsbundet modus.
Praktiske gevinster avhenger av spesifikk maskinvare. På nyere GPU-er med avansert mellomlagring kan manuell lokal minneoptimalisering gi liten eller ingen gevinst, eller til og med en liten reduksjon i bildefrekvens. På noen eldre GPU-er registrerte forfatteren en hastighetsøkning på opptil dobbelt så mye, spesielt merkbart i den interaktive grafikkmodusen FluidX3D. For eksempel, i publiserte tester, akselererte NVIDIA Titan Xp fra 7 til 13 fps, Intel UHD 770 fra 8 til 14 fps i én modus, og Intel Arc A750 fra 22 til 26 fps.
En automatisk tilbakeføring til den forrige implementeringen tilbys for eldre integrerte GPU-er: noen av disse enhetene støtter ikke 512-tråders arbeidsgrupper eller har mindre enn 16 KB lokalt L1-minne. I disse tilfellene vil FluidX3D fortsette å bruke den eldre kjerneversjonen, og opprettholde kompatibiliteten.
Denne versjonen inkluderer også forenklede VR-gjengivelsesbetingelser, deaktivert løkkeutrulling i rasterisering for å redusere "spaghetti" i assembly-utdata, lagt til mikrooptimalisering for convert_triangle/_interpolated(), og rettet en feil i OpenCL-adapteren når kjernenavnet og arbeidsgruppestørrelsen er tomme.
FluidX3D inkluderer en innebygd interaktiv 3D-renderer som lar deg se hastighetsfelt, strømlinjer, Q-kriterium-isosurfacer og skiver direkte under beregninger, uten å måtte eksportere til et separat etterbehandlingsverktøy. FluidX3D Prosjektet hevder også å støtte frie overflater, termisk konveksjon, Smagorinsky-Lilly-turbulensmodellen, partikkelsporing, VTK-eksport og støtte for flere GPU-er.
Det er verdt å merke seg lisensstatusen separat: kildekoden til FluidX3D er åpen og tilgjengelig på GitHub. prosjektlisens Det er ikke gratis i OSI/FSFs strenge forstand. Det tillater bruk til offentlig forskning, utdanning og personlige formål, men forbyr kommersiell og militær bruk, samt trening av AI-modeller ved hjelp av kildekoden.
Kilde: linux.org.ru
