FluidX3D 3.7 â ett paket för berĂ€kningsmĂ€ssig hydrodynamik, som anvĂ€nder metoden för Boltzmanns nĂ€tverkslikningar (LBM) och OpenCL. Projektet marknadsförs som ett högpresterande och minnesekonomiskt CFD-paket, som kan köra pĂ„ GPU och CPU frĂ„n olika tillverkare via OpenCL.
Den största Ă€ndringen i version 3.7 Ă€r optimeringen av kĂ€rnan för rendering av isop surfaces Q-kriteriet (graphics_q()), som anvĂ€nds för att visualisera virvelstrukturer i flödet. I den tidigare implementationen laddade kĂ€rnan ett tungt mönster med 32 tre-dimensionella hastigheter för varje cell i nĂ€tet frĂ„n videominnet. Nu laddar en arbetstrĂ„dgrupp i storlek 8Ă8Ă8 ett block med 11Ă11Ă11 hastigheter i 16 KB lokal minne av första nivĂ„n, vilket sedan gör att nĂ€rliggande trĂ„dar kan Ă„teranvĂ€nda dessa data. Författaren uppskattar att detta minskar antalet laddningar frĂ„n VRAM med cirka 12 gĂ„nger â till 2,6 hastigheter per cell â och flyttar kĂ€rnan frĂ„n ett minnesbandbreddsbegrĂ€nsat lĂ€ge till ett berĂ€kningsbegrĂ€nsat lĂ€ge.
Den praktiska vinsten beror pÄ den specifika hÄrdvaran. PÄ nya GPU:er med avancerade cache-system kan manuell optimering av det lokala minnet nÀstan ge ingen ökning eller till och med minska bildhastigheten nÄgot. PÄ vissa Àldre GPU:er har författaren noterat en acceleration pÄ upp till tvÄ gÄnger, vilket sÀrskilt mÀrks i den interaktiva grafiska lÀget FluidX3D. Till exempel har offentliggjorda tester visat att NVIDIA Titan Xp accelererats frÄn 7 till 13 bilder/s, Intel UHD 770 frÄn 8 till 14 bilder/s i ett av lÀgena, och Intel Arc A750 frÄn 22 till 26 bilder/s.
För Àldre integrerade GPU:er har en automatisk tillbakagÄng till den tidigare implementationen försetts: vissa av dessa enheter stödjer inte arbetstrÄdgrupper med en storlek av 512 strömmar eller har mindre Àn 16 KB lokal minne L1. I dessa fall kommer FluidX3D att fortsÀtta anvÀnda den gamla varianten av kÀrnan, vilket bevarar kompatibiliteten.
Denna version har Àven förenklat villkoren för VR-rendering, stÀngt av loop-expansion i rasteriseringen för att minska "spaghettin" i assemblerutmatningen, lagt till mikrooptimering i convert_triangle/_interpolated(), och rÀttat ett fel i OpenCL-adaptern som uppstod vid tomt kÀrnnamn och storlek pÄ arbetstrÄdgrupp.
FluidX3D inkluderar en inbyggd interaktiv 3D-renderare som gör det möjligt att visualisera hastighetsfÀlt, flödeslinjer, isopartitioner av Q-kriteriet och skivor direkt under berÀkningen, utan behov av att exportera till ett separat efterbehandlingsverktyg. FluidX3D Projektet inkluderar ocksÄ stöd för fria ytor, termisk konvektion, Smagorinsky-Lilly turbulensmodeller, partikelföljning, VTK-export och hantering av flera GPU:er.
Det Àr sÀrskilt vÀrt att notera licensstatusen: FluidX3D:s kÀllkod Àr öppen och tillgÀnglig pÄ GitHub, men projektets licens Àr inte fri i strikt mening enligt OSI/FSF. Den tillÄter anvÀndning för offentliga forskningar, utbildning och personliga ÀndamÄl, men förbjuder kommersiell och militÀr anvÀndning samt trÀning av AI-modeller pÄ kÀllkoden.
KĂ€lla: linux.org.ru
