30 likes | 115 Views
Driver calls : Prismdrv_init_appl. Appl (Psmile) calls : Psmile_init_mpi1 (from prism_init). MPI_comm_dup MPI_COMM_WORLD comm_drv_global Comm_drv_global comm_drv_trans. MPI_comm_dup MPI_COMM_WORLD comm_global Comm_global comm_trans. Proc 0 of driver has read scc
E N D
Driver calls : Prismdrv_init_appl • Appl (Psmile) calls : • Psmile_init_mpi1 (from prism_init) MPI_comm_dup MPI_COMM_WORLD comm_drv_global Comm_drv_global comm_drv_trans MPI_comm_dup MPI_COMM_WORLD comm_global Comm_global comm_trans Proc 0 of driver has read scc file distribution by collective calls collective calls (MPI_Allreduce,MPI_Bcast) for proc in comm_drv_global == for all procs (ie psmile + driver) collective calls (MPI_Allreduce,MPI_Bcast) for proc in comm_global == for all procs (ie psmile + driver) MPI1 : MPI_COMM_WORLD contains all the procs : psmile+driver
key = 0 ; color = Appl%sequence_number CALL MPI_Comm_Split (comm_global, & color, key, Appl%com, id_err ) key = 0 ; color = 0 CALL MPI_Comm_Split (comm_drv_global, & color, key, comm_drv_local, id_err ) Definition of the comm of 1 appl Definition of the comm of the driver key = 0 do index = 1, noApplication If (index = Appl%sequence_number) then color = index else color = MPI_undefined endif CALL MPI_Comm_Split (comm_global, & color, key, comm, id_err ) do index = 1, ig_nb_appl key = 0 ; color = index CALL MPI_Comm_Split (comm_drv_global, & color, key, comm, id_err ) Driver calls : Prismdrv_def_mpi_comm • Appl (Psmile) calls : • Psmile_def_mpi_comm Definition of comm_coupler between driver and one appl Definition of comm_coupling(index) between driver and one appl = comm
Driver calls : Prismdrv_def_mpi_comm • Appl (Psmile) calls : • Psmile_def_mpi_comm key = 0 ; color = MPI_undefined CALL MPI_Comm_Split (comm_drv_global, & color, key, comm_psmile, id_err ) key = 0 ; color = 1 CALL MPI_Comm_Split (comm_global, & color, key, comm_psmile, id_err ) Definition of the comm of all appl