Communicators

An MPI communicator specifies the communication context for a communication operation. In particular, it specifies the set of processes which share the context, and assigns each each process a unique rank (see MPI.Comm_rank) taking an integer value in 0:n-1, where n is the number of processes in the communicator (see MPI.Comm_size.

Types and enums

If you need to pass a Julia MPI.Comm object to an external C/C++ library (via ccall) that expects an MPI_Comm argument, you should declare the corresponding ccall argument type MPI.API.MPI_Comm and the correct conversion will be performed.

Constants

MPI.COMM_WORLDConstant
MPI.COMM_WORLD

A communicator containing all processes with which the local rank can communicate at initialization. In a typical "static-process" model, this will be all processes.

source

Functions

Operations

MPI.Comm_rankFunction
Comm_rank(comm::Comm)

The rank of the process in the particular communicator's group.

Returns an integer in the range 0:MPI.Comm_size()-1.

See also

External links

source
MPI.Comm_compareFunction
Comm_compare(comm1::Comm, comm2::Comm)::MPI.Comparison

Compare two communicators and their underlying groups, returning an element of the Comparison enum.

External links

source
MPI.Comm_groupFunction
Comm_group(comm::Comm)

Accesses the group associated with given communicator.

External links

source
MPI.Comm_remote_groupFunction
Comm_remote_group(comm::Comm)

Accesses the remote group associated with the given inter-communicator.

External links

source

Constructors

MPI.Comm_spawnFunction
Comm_spawn(command, argv::Vector{String}, nprocs::Integer, comm::Comm[, errors::Vector{Cint}]; kwargs...)

External links

source
MPI.Comm_splitFunction
Comm_split(comm::Comm, color::Union{Integer,Nothing}, key::Integer)

Partition the communicator comm, one for each value of color, returning a new communicator. Within each group, the processes are ranked in the order of key, with ties broken by the order of comm.

color should be a non-negative integer, or nothing, in which case a null communicator is returned for that rank.

External links

source
MPI.Comm_split_typeFunction
Comm_split_type(comm::Comm, split_type, key::Integer; kwargs...)

Partitions the communicator comm based on split_type, returning a new communicator. Within each group, the processes are ranked in the order of key, with ties broken by the order of comm.

Currently only one split_type is provided:

  • MPI.COMM_TYPE_SHARED: splits the communicator into subcommunicators, each of which can create a shared memory region.

External links

source

Miscellaneous

MPI.universe_sizeFunction
universe_size()

The total number of available slots, or nothing if it is not defined. This is determined by the MPI_UNIVERSE_SIZE attribute of COMM_WORLD.

This is typically dependent on the MPI implementation: for MPICH-based implementations, this is specified by the -usize argument. OpenMPI defines a default value based on the number of processes available.

source
MPI.tag_ubFunction
tag_ub()

The maximum value tag value for point-to-point operations.

source