muesli2py is developed to supply the functionalities of muesli in python code.
For a minimal prototype the following features are essential:
- configure setup.py to support
- mpi
- cuda OPTIONAL! (probably a good example)
- (openacc)
- openmp (Threading Conflict with GIL)
- support for DA/DM (distributed arrays - distributed matrices)
- research alternatives to include classes (swig (support for parallelization frameworks?), Python class)
- swig works (see swig_muesli)
- pybind11 works (see pybind11_muesli) --> framework of choice
- native arrays
- multi-constructors
- missing templates
- nparray (C-API, writing extension modules)
- research alternatives to include classes (swig (support for parallelization frameworks?), Python class)
- map + variations
- how can userfunctions be pased as arguments? --> functional.h in pybind11
- ...
Features which are not essential for a first prototype
- DA/DM
- support of more than 2 dimensions
- other skeletons
The prototype works similar to the original muesli library. To make use of the library, code has to be wrapped with the functions "initSkeletons" and "terminateSkeletons". Example code, which demonstrates all the funcitonality can be found in the testDA.py and testDM.py files.