FluidX3D v3.7

FluidX3D 3.7 – pacchetto per la dinamica dei fluidi computazionale, che utilizza il metodo delle equazioni di Boltzmann (LBM) e OpenCL. Il progetto è presentato come un pacchetto CFD ad alte prestazioni e a ridotto utilizzo di memoria, in grado di funzionare su GPU e CPU di diversi produttori tramite OpenCL.

Il principale cambiamento della versione 3.7 è stata l'ottimizzazione del nucleo di rendering della superficie isoparametrica Q-criterio (graphics_q()), utilizzato per visualizzare strutture vorticosi nel flusso. Nella precedente implementazione, il nucleo caricava dalla memoria video un pesante modello di 32 velocità tridimensionali per ogni cella della griglia. Ora, il gruppo di lavoro dei thread di dimensioni 8×8×8 carica un blocco di 11×11×11 velocità in 16 KB di memoria locale di primo livello, dopo di che i thread vicini riutilizzano questi dati. Secondo le stime dell'autore, ciò riduce il numero di caricamenti dalla VRAM di circa 12 volte - a 2,6 velocità per cella - e sposta il nucleo dalla modalità limitata dalla larghezza di banda della memoria a quella limitata dai calcoli.

Il guadagno pratico dipende dall'hardware specifico. Su nuove GPU con sistemi di caching avanzati, l'ottimizzazione manuale della memoria locale potrebbe dare poco o nessun incremento della frequenza dei fotogrammi. Su alcune vecchie GPU, l'autore ha registrato un'accelerazione fino a due volte, che è particolarmente evidente nella modalità grafica interattiva di FluidX3D. Ad esempio, nei test pubblicati, la NVIDIA Titan Xp è passata da 7 a 13 fotogrammi/s, l'Intel UHD 770 da 8 a 14 fotogrammi/s in una delle modalità, e l'Intel Arc A750 da 22 a 26 fotogrammi/s.

Per le vecchie GPU integrate è previsto un ritorno automatico alla precedente implementazione: alcune di queste non supportano gruppi di lavoro di dimensioni 512 thread o hanno meno di 16 KB di memoria locale L1. In questi casi, FluidX3D continuerà a utilizzare la vecchia versione del nucleo, mantenendo la compatibilità.

Inoltre, in questa versione sono state semplificate le condizioni per il rendering VR, disattivato lo srotolamento dei cicli nella rasterizzazione per ridurre la "spaghetti" nell'output dell'assemblatore, è stata aggiunta una micro-ottimizzazione in convert_triangle/_interpolated(), e nell'adattatore OpenCL è stato corretto l'output dell'errore in caso di nome del nucleo vuoto e dimensione del gruppo di lavoro.

FluidX3D include un renderer 3D interattivo integrato che consente di visualizzare i campi di velocità, le linee di flusso, le isop surface del criterio Q e i tagli direttamente durante il calcolo, senza la necessità di esportare in un diverso strumento di post-elaborazione. FluidX3D Il progetto prevede anche il supporto per superfici libere, convezione termica, modello di turbolenza Smagorinsky-Lilly, tracciamento delle particelle, esportazione VTK e utilizzo di più GPU.


Vale la pena notare lo stato della licenza: il codice sorgente di FluidX3D è aperto e disponibile su GitHub, tuttavia la licenza del progetto non è libera nel senso rigoroso dell'OSI/FSF. Essa consente l'uso per ricerche pubbliche, istruzione e scopi personali, ma vieta l'uso commerciale e militare, così come l'addestramento di modelli AI sul codice sorgente.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster