We would like to bring to your attention a new Open Source project we have been working on for the second half of the last year. The project is called Sailfish and it implements the Lattice-Boltzmann method for Graphics Processing Units (GPUs). The majority of the code is written in Python, which is used to automatically generate optimized code for the GPU in either CUDA C or OpenCL. We have been able to achieve speed-ups of about 100x (more than 1000 MLUPS) on a single modern GPU (NVIDIA GTX 285) as compared with a typical CPU implementation (using performance levels cited on http://www.lbmethod.org/numerics:codes).
The project currently has support for both 2D (D2Q9) and 3D (D3Q13, D3Q15 and D3Q19) simulations, with both BGK and MRT, the weakly compressible and incompressible models, different boundary conditions, etc. We will be extending it further with more options as time goes by.
If you happen to own an NVIDIA graphics card and running Linux, we encourage you to give it a try for yourself (see documentation for installation instructions). Otherwise, you can also view our demo videos on YouTube (again, see the documentation).
Since this is an open project, all contributions are most welcome. We hope you will find it useful in some way and decide to extend it, submit patches, etc. Should you have any questions, comments or suggestions, feel free to post them either here or on our project mailing list. We would be happy to help.
Links related to the project:
- the code: http://gitorious.org/sailfish
- documentation: http://sailfish.us.edu.pl/
- the mailing list: http://groups.google.com/group/sailfish-cfd