pylammpsmpi
pylammpsmpi copied to clipboard
[Idea] Next generation interface
There are three things we learned so far:
- using
zmqsimplifies the communication between the primary process and the subprocess. - with
__getattribute__()we can overwrite the functions of a given class. - with
cloudpicklewe can even picklectypes
So for the next version of pylammpsmpi I guess we need much less code. Just load the LAMMPS library class and then before a function is called, interfere using __getattribute__(), cloudpickle the data that is communicated transfer it to the MPI parallel subprocess and then execute the call there. Afterwards cloudpickle the response and communicate it back up. This should drastically decrease the code base for pylammpsmpi and increase the consistency with the official LAMMPS python API.
Certain functions are only called on MPI.COMM_WORLD.rank == 1 so the internal call might look different from the outside call on the serial executable.