bcMPI - API Reference
Functions
MPI_Abort()
MPI_Abort - Terminates MPI execution environment.
MPI_Abort(comm, errorcode) terminates all processes in the
communicator and exits with errorcode.
MPI_Abort() is the same as MPI_Abort(MPI_COMM_WORLD, 1), for
compatibility with MatlabMPI.
Note most MPI implementations will ignore the communicator and
terminate all processes.
MPI_Barrier()
MPI_Barrier - Block until all processes call this function
MPI_Barrier(comm) blocks the caller until all communicator members
have called this function.
MPI_Bcast()
MPI_Bcast - broadcast data to all processes of the group
[ data1, ..., dataN ] = MPI_Bcast(root, comm, data1, ..., dataN)
Broadcast data from the process with rank=root to all processes.
Data input from non-root processes is optional and ignored.
This interface is expected to be compatible with MatlabMPI, with
the exception that sends are not guaranteed to be non-blocking unless
sufficient bufffering has been configured with MPI_Buffer_attach().
MPI_Bcast() is implemented as a sequence of send and receives to
allow receivers to call MPI_Recv() instead (as dictated by
MatlabMPI). See also MPI_Broadcast() for a more efficient
implementation.
MPI_Broadcast()
MPI_Broadcast - broadcast data to all processes of the group
[ data1, ..., dataN ] = MPI_Broadcast(root, comm, data1, ..., dataN)
Broadcast data from the process with rank=root to all processes.
Data input from non-root processes is optional and ignored.
This interface follows the MPI standard for MPI_Bcast(), the
name was changed to maintain compatibility with MatlabMPI. All
processes must call MPI_Broadcast(), it is not compatible with
MPI_Recv().
MPI_Buffer_attach()
MPI_Buffer_attach - allocate a buffer to make MPI_Send non-blocking
MPI_Buffer_attach(N) allocates N megabytes of buffer space and
passes it to the underlying MPI library. MPI_Send() and MPI_Bcast()
will automatically use the buffer for non-blocking operation, and
therefore be compatible with MatlabMPI.
The application is responsible for calling MPI_Buffer_detach()
to free the buffer memory.
XXX meta data overhead requirements?
MPI_Buffer_detach()
MPI_Buffer_detach - free buffer and make MPI_Send blocking
MPI_Buffer_attach() - detach and free the buffer previously
allocated by MPI_Buffer_attach().
MPI_Comm_compare()
MPI_Comm_compare - Compare two communicators
result = MPI_Comm_compare(comm_a, comm_b) returns an integer which is
MPI_IDENT if the contexts and groups are the same
MPI_CONGRUENT if different contexts but identical groups
MPI_SIMILAR if different contexts but similar groups
MPI_UNEQUAL otherwise
MPI_Comm_create()
MPI_Comm_create - Create a new communicator
new_comm = MPI_Comm_create(comm, group) returns a new communicator
over the group which is a subset of the group of original comm.
group is a matlab row or column vector
MPI_Comm_dup()
MPI_Comm_dup - Duplicates an existing communicator
new_comm = MPI_Comm_dup(org_comm) returns a new communicator
over the same group as org_comm but with a new context.
MPI_Comm_free()
MPI_Comm_free - Mark the communicator object for deallocation
MPI_Comm_free(comm) - communicator comm is destroyed.
MPI_Comm_get_name()
MPI_Comm_get_name - Get the name for a communicator
s = MPI_Comm_get_name() returns the name for the communicator.
MPI_Comm_rank()
MPI_Comm_rank - Get the rank of the calling process
rank = MPI_Comm_rank(comm) returns the caller's rank in the
communicator group.
MPI_Comm_set_name()
MPI_Comm_set_name - Set the name for a communicator
MPI_Comm_size()
MPI_Comm_size - Get the size of the communicator group
size_ = MPI_Comm_size(comm) returns the number of processes in the
communicator group.
MPI_Finalize()
MPI_Finalize - Terminate MPI execution environment.
MPI_Finalize() terminates the MPI execution environment.
MPI_Finalized()
MPI_Finalized - Indicates whether MPI_Finalize() has been called.
flag = MPI_Finalized() returns true if MPI_Finalize() has been
called.
MPI_Gather()
MPI_Gather - Gathers together values from a group of processes
MPI_Gather(data, root, comm) gathers a N-dimensional matrix
from all processes, joining(?) them into a single large matrix.
XXX all but last dimension must match?
Result is returned only to the process with rank=root.
MPI_Get_processor_name()
MPI_Get_processor_name - Gets the name of the processor
s = MPI_Get_processor_name() returns the name of the processor.
MPI_Init()
MPI_Init - Initialize the MPI execution environment
MPI_Init() initializes the MPI execution environment.
MPI_Initialized()
MPI_Initialized - Indicates whether MPI_Init() has been called.
flag = MPI_Initialized() returns true if MPI_Init() has been called.
MPI_Op_create()
MPI_Op_create - Create a user-defined combination function handle
op = MPI_Op_create(user_fun, is_commute) returns a handle that
can be used with the MPI collective computation functions (eg,
MPI_Reduce).
The function must be of the form result = user_fun(a, b), where a,
b, and the result are all matrices of identical size and class. The
result is typically computed element-wise. The function is assumed
to be associative, set is_commute to false if the function is not
commutative.
MPI_Probe()
MPI_Probe - test for a message (non-blocking)
[ rank, n_tag, s_tag ] = MPI_Probe(src, tag, comm)
Returns the next message available to be received, if any.
src may be an integer, '*', or MPI_ANY_SOURCE.
tag may be an integer, '*', or MPI_ANY_TAG.
n_tag is numeric, s_tag (optional) is a string.
This interface is expected to be compatible with MatlabMPI. Note
that this implementation can return at most one pending message.
This function would be better named MPI_Iprobe().
XXX optional timeout, count
MPI_Recv()
MPI_Recv - Receive a message
[ data1, ..., dataN ] = MPI_Recv(src, tag, comm) receives a
message from given source and tag.
This interface is expected to be compatible with MatlabMPI.
XXX need access to source and tag from MPI_ANY_SOURCE and MPI_ANY_TAG
MPI_Reduce()
MPI_Reduce - Reduces values on all processes to a single value
y = MPI_Reduce(my_data, op, root, comm) reduces each N-dimensional
matrix element from all processes to a single value. Result is
returned only to the process with rank=root.
y = MPI_Reduce(root, tag, comm, operand, op) is expected to be
compatible with the version of MPI_Reduce from Dr. Judy Gardiner...
MPI_Send()
MPI_Send - Send a message
MPI_Send(dest, tag, comm, data1, ..., dataN) sends a message to
the given destination.
This interface is expected to be compatible with MatlabMPI, with
the exception that sends are not guaranteed to be non-blocking unless
sufficient bufffering has been configured with MPI_Buffer_attach().
MPI_Wtick()
MPI_Wtick - get the resolution of MPI_Wtime()
r = MPI_Wtick() returns the resolution of the wall clock values
returned by MPI_Wtime(), which depends on the clocks available
in the underlying system.
MPI_Wtime()
MPI_Wtime - return current wall time
t = MPI_Wtime() returns the number of seconds since an arbitrary
time in the past.
See also MPI_Wtick() and MPI_WTICK_IS_GLOBAL.
bcMPI_Hash_tag()
bcMPI_Hash_tag - calculate a hash value of a tag
hash = bcMPI_Hash_tag(tag)
Used internally to convert an alphanumeric tag to a number,
for compatibility with MatlabMPI. YMMV.
Constants
MPI_ANY_SOURCE
accept a message from any rank
MPI_ANY_TAG
accept a message with any tag value
MPI_BAND
bitwise and operation
MPI_BOR
bitwise inclusive or operation
MPI_BXOR
bitwise exclusive or operation
MPI_COMM_WORLD
communicator containing all processes
MPI_LAND
logical and operation
MPI_LOR
logical inclusive or operation
MPI_LXOR
logical exclusive or operation
MPI_MAX
maximum value operation
MPI_MIN
minimum value operation
MPI_PROD
product operation
MPI_SUM
addition operation
MPI_TAG_UB
largest supported tag value
MPI_WTIME_IS_GLOBAL
true if MPI_Wtime() clocks are synchronized |