SimiLie relies on git submodule
to manage its dependencies and on cmake
as a build system. It is a lightweight header-only library. It can thus be included as a dependency of your project with the cmake
command-line:
By including the header file similie.hpp
in your code, you get access to:
Kokkos::
namespace, a performance-portable (CPU & GPU) C++ library targeting all major HPC platforms.ddc::
namespace, an abstraction layer build upon Kokkos to provide labeling of dimensions of arrays and convenient API to describe discrete scalar fields (+ computation kernels for FFT and splines).sil::
namespace.Moreover, parts of SimiLie [are planned to] relie on the FFT and splines kernels provided by DDC. The first is build upon kokkos-fft and the second upon kokkos-kernels or Ginkgo, depending on the linear algebra backend you want to use. Unfortunalty, at this moment DDC does not support linking only one of those two backends, thus you need a complete install of Ginkgo 1.8 to run SimiLie even if you do not plan to use it (this dependency is not provided as a git submodule
, due to its weight). DDC FFT and splines kernels also require FFTW and LAPACKE, that are nor provided as git submodules
.
I/O are handled by the Decl'HDF5 plugin of PDI, that is nor provided as a git submodule
.
Finally, the sil::young_tableau
module relies on the embed directive from C23. As it is not yet in C++ (even in C++26), the only supported compiler for this module at the moment seems to be Clang 19. Thus, by default the BUILD_YOUNG_TABLEAU
flag is turned OFF
and this feature (which is quite independant of the rest of the SimiLie library) is not compiled, making SimiLie a C++20 library.
First, be sure to have a full install of FFTW, LAPACKE, Ginkgo and PDI. Then clone the main branch of the github repo and populate the other dependencies with:
Make a build/
folder, cd build/
and run the command:
for CPU compilation or:
for Nvidia GPU compilation. <YOUR_ARCH_NAMECODE>
must be replaced with a hardware-specific namecode that you will find here.
You can then edit the configuration with ccmake .
. Please refer to the documentations of Kokkos and DDC for their respective cmake compilation flags.
Finally compile with the make
command (with -j
flag for parallel compilation).
Tests chain can be run with:
A particular test with:
And examples are compiled in the examples/
folder.