FluidX3D 3.7 â ein Paket fĂŒr computational Fluid Dynamics, das die Methode der lattice Boltzmann equations (LBM) und OpenCL nutzt. Das Projekt wird als leistungsstark und speichereffizienter CFD-Paket positioniert, das auf GPUs und CPUs verschiedener Hersteller ĂŒber OpenCL arbeitet.
Die HauptĂ€nderung in Version 3.7 ist die Optimierung des Kernelements zur Darstellung der IsophĂ€ren des Q-Kriteriums (graphics_q()), das zur Visualisierung von Strömungswirbeln verwendet wird. In der vorherigen Implementierung lud der Kern ein umfangreiches Muster von 32 dreidimensionalen Geschwindigkeiten fĂŒr jede Zelle des Gitters aus dem Videospeicher. Jetzt lĂ€dt die Arbeitsgruppe von 8Ă8Ă8 Threads einen Block von 11Ă11Ă11 Geschwindigkeiten in 16 KB erstklassiger lokaler Speicher, woraufhin benachbarte Threads diese Daten wiederverwenden. Der Autor schĂ€tzt, dass dies die Anzahl der LadevorgĂ€nge aus dem VRAM um etwa das 12-fache reduziert â auf 2,6 Geschwindigkeiten pro Zelle â und den Kern von einem speicherbandbreitenlimitierten Modus in einen rechnerisch limitierten Modus ĂŒberfĂŒhrt.
Der praktische Gewinn hÀngt von der spezifischen Hardware ab. Auf neuen GPUs mit einem entwickelten Caching-System kann die manuelle Optimierung des lokalen Speichers kaum einen Anstieg der Bildrate bewirken oder diese sogar leicht reduzieren. Bei einigen Àlteren GPUs verzeichnete der Autor eine Beschleunigung von bis zu dem Doppelten, was besonders im interaktiven Grafikmodus FluidX3D auffÀllt. So erreichte beispielsweise die getestete NVIDIA Titan Xp einen Anstieg von 7 auf 13 Bildern pro Sekunde, die Intel UHD 770 von 8 auf 14 Bildern pro Sekunde in einem der Modi, und die Intel Arc A750 von 22 auf 26 Bildern pro Sekunde.
FĂŒr Ă€ltere integrierte GPUs gibt es eine automatische RĂŒckkehr zur vorherigen Implementierung: Einige solcher GerĂ€te unterstĂŒtzen keine Arbeitsgruppen mit 512 Threads oder haben weniger als 16 KB lokalen L1-Speicher. In diesen FĂ€llen wird FluidX3D die alte Version des Kernels weiter nutzen und die KompatibilitĂ€t aufrechterhalten.
In dieser Version wurden auch die Bedingungen fĂŒr das VR-Rendering vereinfacht, die Schleifenentfaltung in der Rasterisierung deaktiviert, um "Spaghetti" im Assemblertest zu reduzieren, eine Mikro-Optimierung in convert_triangle/_interpolated() hinzugefĂŒgt, und im OpenCL-Adapter wurde die Fehlermeldung bei leerem Kernnamen und ArbeitsgrĂŒppengröĂe korrigiert.
FluidX3D verfĂŒgt ĂŒber einen integrierten interaktiven 3D-Renderer, der es ermöglicht, Geschwindigkeitsfelder, Stromlinien, IsoplĂ€nen des Q-Kriteriums und Schnitte wĂ€hrend der Berechnung direkt zu visualisieren, ohne dass ein Export in ein separates Post-Processing-Tool erforderlich ist. FluidX3D Das Projekt bietet zudem UnterstĂŒtzung fĂŒr freie OberflĂ€chen, WĂ€rmeĂŒbertragung, das Smagorinsky-Lilly-Turbulenzmodell, Partikelverfolgung, VTK-Export und die Nutzung mehrerer GPUs.
Besonders erwĂ€hnenswert ist der Lizenzstatus: Der Quellcode von FluidX3D ist offen und auf GitHub verfĂŒgbar, jedoch die Lizenz des Projekts ist nicht im strengen Sinne der OSI/FSF frei. Sie erlaubt die Nutzung fĂŒr öffentliche Forschung, Bildung und private Zwecke, verbietet jedoch kommerzielle und militĂ€rische Anwendungen sowie das Training von KI-Modellen mit dem Quellcode.
Quelle: linux.org.ru
