230 likes | 396 Views
MPI-2. Functional Explorations of Additions to MPI. Ryan Johnsonbaugh. MPI-2 Additions. - Naming Changes - Process Creation and Management - One-Sided Communications - Extended Collective Operations - External Interfaces - I/O. Naming Changes. - Class_action_subset
E N D
MPI-2 Functional Explorations of Additions to MPI Ryan Johnsonbaugh
MPI-2 Additions - Naming Changes - Process Creation and Management - One-Sided Communications - Extended Collective Operations - External Interfaces - I/O
Naming Changes - Class_action_subset - Class_action (if no subset exist) - Action_subset (if not associated with a class) - "Create creates a new object, Get retrieves information about an object, Set sets this information, Delete deletes information, Is asks whether or not an object has a certain property."
Process Creation and Management - MPI 1 Model has a static process list - MPI 2 Model > "MPI applications may start new processes through an interface to an external process manager,which can range from a parallel operating system (CMOST) to layered software (POE) to an rsh command (p4)."
Process Creation - MPI_comm_spawn(command, argv, maxprocs, info, root, comm, intercomm, array_of_errcodes) - MPI_comm_spawn_multiple(char *command, char *argv[], int maxprocs, MPI Info info,int root, MPI Comm comm, MPI Comm *intercomm,int array of errcodes[])
Runtime Environment - These Spawn functions create an interface between MPI and the actual runtime environment of your application using MPI. - MPI is not an operating system it simply facilitates communications between applications and therefore assumes the existence of the environment.
Runtime Environment (Limitations) - Spawn commands create new processes - Spawned processes can be instructed where and how to run using the info argument. - MPI_universe_size attribute of MPI_comm_world
Process Manager Interface - Children processes are in their own MPI_comm_world and MPI_comm_spawn in the parent MAY not return until MPI_init is called in the child. - If the program named in command does not call MPI_init, but instead forks a process that calls MPI_init, the results are undefined. Implementations may allow this case to work but are not required to.
Process Manager Interface - int MPI_comm_get_parent(MPI_Comm *parent) - if a process is created using either of the Spawn commands this will return the parent intercommunicator else returns MPI_comm_null.
One-Sided Communications - Remote Memory Access > A process can specify all communication parameters for both the sending and receiving side. - MPI_put (remote write) - MPI_get (remote read) - MPI_accumulate (remote update)
Initialize One-Sided Communications - MPI_win_create(base, size, disp_unit, info, comm, win) > called by all process in the group of communication. - MPI_win_free(win) > also called by all processes only after all RMA communications are completed. Frees the window memory from RMA communicator. -no process returns from free routine till all have called free.
RMA Communications Pairs - MPI_win_post and MPI_win_wait - MPI_win_start and MPI_win_complete - MPI_win_lock and MPI_win_unlock
RMA Transfer Routines - MPI_put(originaddr, origincount, origin_datatype, targetrank, targetdisp, targetcount, targetdatatype, win) - MPI_get - MPI_accumulate(originaddr, origincount, origindatatype, targetrank, targetdisp, targetcount, targetdatatype, op, win)
Extended Collective Operations - Intercommunicator Constructors > MPI_intercomm_create > MPI_comm_dup - Intracommunicators (now intercomm also) > MPI_comm_create > MPI_comm_split
Extended Intercommunicator Collective Operations Formerly only intracommunicator routines - All-To-All: Alltoall, Alltoallv, Allreduce, Reduce_scatter - All-To-One: Gather, Gatherv, Reduce - One-To-One: Bcast, Scatter, Scatterv - Other: Scan, Barrier
External Interfaces - users can associate names with communicators, windows, and datatypes. - users can add error codes, classes, and strings to MPI
I/O - Added Support to Manipulate files and file systems on disk drives connected to the system.
Sources - MPI-2: Extensions to the Message-Passing Interface http://www.mpi-forum.org/docs/mpi2-report.pdf