Technologies Used

Technologies Used#

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 allows for a 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 program to use C code in performance critical code. In this sense, the cupy library have 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 symbolics mathematics, because LBM and other models used are composed by a great number of equations that must be combined with each other, so this is done through symbolics 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.