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.