TechnologiesΒΆ

To perform these simulations, Nassu combines the versatility of Python and the performance of CUDA to run simulations using all compute powers of GPUs.

The number of libraries, great community and higher level abstractions of Python allow for faster development compared to low level languages such as C or C++. Despite it being interpreted and a slow language, its interoperability with C allows programs to use C code in performance-critical paths. In this sense, the CuPy library has the capability of managing GPUs and run code using them.

To generate the custom code optimized for each simulation configuration Nassu uses jinja as template language and sympy for symbolic mathematics, because LBM and other models used are composed of a great number of equations that must be combined with each other, so this is done through symbolic mathematics.

Note

This architecture is greatly influenced by Sailfish

So Nassu uses Python to setup the simulation and generate C/CUDA code, after that it runs the simulation through the C/CUDA kernels, using the GPU capabilities.