1

I am trying to implement a parent/child configuration in mpi4py. My goal is

parent : will run on 1 core

child : will run on N cores

I am trying to send data from parent to child's rank=0.

tried this:

master:

from mpi4py import MPI import sys

def main():
    datafileopls='MEDIUM2_opls.lmp'
    lammpscomm = MPI.COMM_SELF.Spawn(sys.executable,
                             args=['/storage/home/duy42/Developer/MLReax/Src3/lammps_driver.py'              
                           ],maxprocs=9)
    lammpscomm.send(datafileopls,0,0)
    current_step = lammpscomm.recv(None,0,0)
    print(current_step)
    lammpscomm.Disconnect()
if __name__ =='__main__':
main()

Child:

def main():
    parent = MPI.Comm.Get_parent()
    comm = MPI.COMM_WORLD
    assert parent != MPI.COMM_NULL
    try:
        status = MPI.Status()
        any_src , any_tag = MPI.ANY_SOURCE, MPI.ANY_TAG
        print(parent.Get_rank(),comm.Get_rank(),status.source)
        if comm.Get_rank() == 0:
            print('LAMMPS DRIVER CONNECTED')
            datafileopls = parent.recv(None,any_src, any_tag, status)
            current_step = 123
            parent.send(current_step,status.source,0)
    finally:
        parent.Disconnect()
        print('All done')
   
    return
    
if __name__ == "__main__":
    main()

the code hangs before sending data to parent. What I am missing here?

Thanks in advance.

dundar yilmaz
  • 141
  • 1
  • 6

0 Answers0