FluidX3D v3.7

FluidX3D 3.7 – un pachet pentru hidrodinamica computațională, care folosește metoda ecuațiilor Boltzmann pe rețea (LBM) și OpenCL. Proiectul este poziționat ca un pachet CFD de înaltă performanță și eficient din punct de vedere al memoriei, capabil să funcționeze pe GPU și CPU de la diferiți producători prin intermediul OpenCL.

Principala modificare din versiunea 3.7 a fost optimizarea nucleului pentru redarea izoferonței Q-criteriului (graphics_q()), utilizat pentru vizualizarea structurilor de vortex în flux. În implementarea anterioară, nucleul încărca din memoria video un model greu de 32 de viteze tridimensionale pentru fiecare celulă a rețelei. Acum, un grup de lucru de fire de dimensiune 8×8×8 încarcă un bloc de 11×11×11 viteze în 16 KB de memorie locală de nivel 1, după care firele adiacente reutilizează aceste date. Potrivit autorului, acest lucru reduce numărul de încărcări din VRAM cu aproximativ 12 ori — la 2,6 viteze pe celulă — și transferă nucleul dintr-un mod limitat de lățime de bandă a memoriei într-un mod limitat de calcule.

Câștigul practic depinde de echipamentul specific. Pe GPU-uri noi cu un sistem de cache avansat, optimizarea manuală a memoriei locale poate oferi aproape niciun spor sau chiar poate reduce puțin frecvența cadrelor. Pe unele GPU-uri vechi, autorul a observat o accelerare de până la două ori, ceea ce este deosebit de evident în modul grafic interactiv FluidX3D. De exemplu, în testele publicate, NVIDIA Titan Xp a accelerat de la 7 la 13 cadre/s, Intel UHD 770 — de la 8 la 14 cadre/s într-unul dintre moduri, iar Intel Arc A750 — de la 22 la 26 cadre/s.

Pentru GPU-urile integrate mai vechi, s-a prevăzut o revenire automată la realizarea anterioară: unele dintre aceste dispozitive nu suportă grupuri de lucru de dimensiune 512 de fire sau au mai puțin de 16 KB de memorie locală L1. În aceste cazuri, FluidX3D va continua să utilizeze vechea variantă a nucleului, păstrând compatibilitatea.

De asemenea, în această versiune au fost simplificate condițiile pentru redarea VR, s-a dezactivat desfășurarea ciclurilor în rasterizare pentru a reduce „spaghetti”-ul din ieșirea în assembler, a fost adăugată o micro-optimizare în convert_triangle/_interpolated(), iar în adaptorul OpenCL a fost corectată ieșirea erorii în cazul unui nume de nucleu gol și a dimensiunii grupului de lucru.

FluidX3D include un renderer 3D interactiv integrat, care permite vizualizarea câmpurilor de viteză, liniilor de curent, izo-superficielor criteriului Q și a secțiunilor în timp real, fără a necesita exportul în un instrument de post-procesare separat. FluidX3D Proiectul mai include suport pentru suprafețe libere, convecție termică, modelul de turbulență Smagorinsky-Lilly, urmărirea particulelor, export VTK și funcționarea pe mai multe GPU-uri.


Este demn de menționat statutul de licență: codul sursă FluidX3D este deschis și disponibil pe GitHub, însă licența proiectului nu este liberă în sensul strict al OSI/FSF. Aceasta permite utilizarea pentru cercetări publice, educație și scopuri personale, dar interzice utilizarea comercială și militară, precum și antrenarea modelelor AI pe baza codului sursă.

Sursa: linux.org.ru

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster