For the purposes of this chapter, MPI is a message passing library which offers a host of point-to-point and collective interprocess communication functions to a set of single threaded processes executing in parallel. All communication is performed within the confines of a communicator. A communicator is a process group, with each process having a unique rank in the group, ranging from 0 to N-1, where N is the number of processes in the communicator. A process can be a member of multiple communicators at the same time, and may have different ranks in each communicator. Communicators provide a safe communication universe, in that a message sent in one communicator can never be received in another communicator. Even within the same communicator, collective communication and point-to-point communication can never interfere e.g. a broadcast message cannot be received using a point-to-point receive function call. As soon as a group of processes initialize the MPI communication library, two communicators automatically get created at each process: MPI_COMM_WORLD, which consists of all processes that participated in the initialization, and MPI_COMM_SELF, which consists only of the local process. New communicators can be dynamically created by splitting or duplicating existing communicators, using collective functions discussed later. Communicators can also be dynamically destroyed.