1

我正在尝试在 mpi4py 中实现父/子配置。我的目标是

父级:将在 1 个核心上运行

child : 将在 N 个内核上运行

我正在尝试将数据从父母发送到孩子的 rank=0。

试过这个:

掌握:

从 mpi4py 导入 MPI 导入系统

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()

孩子:

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()

代码在向父级发送数据之前挂起。我在这里缺少什么?

提前致谢。

4

0 回答 0