Overview¶
Architecture of the project¶
Muscat is a project that aims to unify speed and portability.
Speed¶
The project has originally been made in python and has been improved by a cpp layer to further speed up the process. Moreover, the recent usage of Kokkos aims to accelerate even more the computations on specific parts of the algorithms.
Portability¶
In order to allow one to use python on its full capacity based on a given machine capability, the compilation of the project needs to take into account the hardware and software constraints throughout all of the compilation process. It has thus be chosen to divide Muscat in 3 independent “modules”, each responsible of one improvement:
Python
: all of the python source code is located undersrc
directory and compose the core of the project.
Cpp
: cpp interface is located undercpp_src
directory and make up thelibMuscatNative.so
shared library. This library shall be sufficient to run any kind of algorithm as well.Kokkos
: the kokkos interface is built on top of thelibMuscatNative.so
and is located in thecpp_src
as well. It speeds up certain part of the library.
Folder architecture¶
This is a quick overview of what are each folder for in the project. Please note that all of the folders might not be present.
cmake/
: Contains the .cmake files used for the compilation. Those files aim to be included in CMakeListst.txt.cpp_generators/
: Contains python files to generate some of the cpp code base (the redundant files).ParaViewPlugins/
: Contains python modules to allow one to interface with Paraview.src/
: Contains the python modules of Muscat. Thos are the “public” endpoints of the lib.cpp_src/
: Contains the cpp source files of Muscat. That also includes Kokkos files.