The fastest and most memory efficient lattice Boltzmann CFD software, running on all GPUs via OpenCL.
I'm doing my part! With the v2.16 update I've put down all remaining known bugs for good. 🖖😎❌🪳❌ WOULD YOU LIKE TO KNOW MORE?
Bug fixes in this release:
fma
) with a*b+c
QWERTY
keyboard layout in LinuxXInitThreads()
call that could crash Linux interactive graphics on some systemsgraphics_rasterize_phi()
and graphics_flags_mc()
kernelsOther improvements:
With GitHub I can track every bug from day it was discovered/fixed back to the day it was first introduced. This allows me to graph the number of open bugs over time, along with a curve weighted by their individual severity (minor 0.25
, low 0.5
, medium 1.0
, high 2.0
, showstopper 4.0
):
Here is the distribution of days open, days till discovery and days till fix. I fixed 56% of bugs on the day of discovery. Notice the bimodal distribution of days open - a clear separation into "easy" and "nasty" bugs.
Lessons learned:
Have fun with the software! -- Moritz
PS: Here's an amusing FluidX3D video from @SLGY, he's doing his part too!
Thank you for using FluidX3D! Update v2.15 boosts framerate in interactive graphics by 20-70%:
g++
compiler optimizations for faster startup and higher rendering framerateBug fixes:
INTERACTIVE_GRAPHICS_ASCII
rendering startedHave fun with the software! -- Moritz
Thank you for using FluidX3D! Update v2.14 brings an upgrade to visualization kernels and eases compiling:
VIS_FLAG_SURFACE
and VIS_PHI_RASTERIZE
modes is smoother nowmake.sh
now automatically detects operating system and X11 support on Linux and only runs FluidX3D if last compilation was successfulBug fixes:
make.sh
failing on some systems due to nonstandard interpreter pathmake
would not compile with multiple cores on some systemsHere is a YouTube video (some screen recordings) to showcase the update, all real-time simulations on an Intel Arc A750:
Have fun with the software! -- Moritz
make.sh
.Thank you for using FluidX3D! Update v2.13 improves .vtk
export:
.vtk
files is now automatically converted to SI units.vtk
export with multithreadingTEMPERATURE
extensionBug fixes:
get_exe_path()
for macOSenqueueFillBuffer
is broken for large buffers on Nvidia GPUs-cl-fast-relaxed-math
LBM::write_status()
LBM::write_mesh_to_vtk()
Have fun with the software! -- Moritz
Thank you for using FluidX3D! Update v2.12 significantly reduces compile and startup time:
make
is installed, source code compiling on Linux is now ~3x faster using multiple CPU cores, from ~15s to ~5sBug fixes:
Memory_Container::reset()
functionHere is how launch time changed with FluidX3D versions: Setup: 3D Taylor-Green vortices, single 384³ domain, D3Q19 SRT FP32/FP16S Hardware: Lenovo Y50-70, i7-4720HQ, 2x 8GB DDR3 1600 MT/s, GTX 960M 4GB
I had compared all previous versions and found v2.0 to introduce a big jump in startup time. This was due to changing LBM data field access from direct array access to domain decomposition indexing, which turned out as the main bottleneck during simulation startup. This is now fixed, with an indexing shortcut for single-GPU and pre-computing variables for multi-GPU indexing. Together with multi-core parallelization of initialization (v2.9) and faster buffer initialization (v2.11), launch time is now shorter than ever.
Have fun with the software! -- Moritz
Thank you for using FluidX3D! I have recently upgraded my laptop from Windows 10 to bugged and bloated Windows 11 kubuntu Linux with the amazing KDE Plasma desktop, and wanted the same FluidX3D interactive graphics capabilities as on Windows. FluidX3D could already do interactive graphics on Linux since v1.4, but only in 720p windowed mode. Update v2.11 changes that, and also adds two more minor improvements:
std::fill
and enqueueFillBuffer
(overall ~8% faster simulation startup)Bug fixes:
visualization_modes
changedHave fun with the software! -- Moritz
Thank you for using FluidX3D! Update v2.10 contains improvents to rasterization performance:
units.set_m_kg_s(...)
is usedBug fixes:
voxelize_mesh(...)
kernelshading(...)
std::rand()
function with standard C99 LCGHave fun with the software! -- Moritz
Thank you for using FluidX3D! The v2.9 update makes simulation startup a lot quicker, especially for large multi-GPU simulations:
parallel_for
implementation in utilities.hpp
using std::threads
calculate_force_on_object()
and calculate_torque_on_object()
functions with multithreadinglbm.write_status()
Bug fixes:
Mesh::get_bounding_box_size()
print_message()
function in utilities.hpp
Let the cores go brrrr!
Have fun with the software! -- Moritz
Thank you for using FluidX3D! The v2.8 update doesn't add too many new features, but finally more documentation, loads of refactoring and significant usability improvements:
setup.cpp
for much more beginner-friendly learningdefines.hpp
as comments to all setups in setup.cpp
Mesh
struct in utilities.hpp
uint3 resolution(float3 box_aspect_ratio, uint memory)
function to compute simulation box resolution based on box aspect ratio and VRAM occupation in MBbool lbm.graphics.next_frame(...)
function to export images for a specified video length in the main_setup
compute loopVIS_...
macros to ease setting visualization modes in headless graphics mode in lbm.graphics.visualization_modes
#define GRAPHICS_TRANSPARENCY 0.7f
in defines.hpp
)Bug fixes:
Some showcases of what v2.8 is capable of: (click on images to show videos on YouTube)
Have fun with the software! -- Moritz