Supercomputing Networking Research Education Ohio Supercomputer Center Site Map Staff Directory Support
Welder image

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