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

bcMPI - Features

Interpreter Support

bcMPI consists of a common core library and separate MPI toolboxes for each of these interpreters:

MPI Library Support

bcMPI should be able to work with any standard MPI library implementation. These libraries are actively tested by the developers:

  • OpenMPI
  • MPICH

These MPI libraries have worked in the past, but are not actively used by the developers:

  • MPICH-2
  • MVAPICH

The bcMPI developers have not yet tested any other MPI implementations.

Language bindings

Implemented MPI Functions

  • Basic MPI functions - MPI_Init(), MPI_Finalize(), MPI_Abort()
  • Basic communicator functions - MPI_Comm_size(), MPI_Comm_rank()
  • Communicator support - MPI_Comm_create(), MPI_Comm_dup(), MPI_Comm_free(), MPI_Comm_compare(), MPI_Comm_group(), MPI_Comm_set_name(), MPI_Comm_get_name()
  • Basic communications - MPI_Send(), MPI_Recv(), MPI_Bcast()
  • Collective operations - MPI_Barrier(), MPI_Gather(), MPI_Reduce()
  • Reduce operations - SUM, PROD, BAND, BOR, BXOR, LAND, LOR, LXOR, MIN, MAX

The complete bcMPI API Reference.

Comparison with MatlabMPI

Compatibility with MatlabMPI is provided when possible.

Differences between bcMPI and MatlabMPI

  bcMPI MatlabMPI
tag values integer values (experimental string hashing), restricted by underlying MPI_TAG_UB, reusable arbitrary numbers or strings, must be unique
collective tags (broadcast, scatter, gather, reduce) optional, ignored required
MPI_Bcast() compatible with MatlabMPI root does MPI_Send() to each process, receivers may call MPI_Bcast() or MPI_Recv()
MPI_Broadcast() efficient use of underlying MPI_Bcast() not implemented
asynchronous sends may block, unless user specifies sufficient memory size with MPI_Buffer_attach() never blocks, unlimited buffering using NFS files
MPI_Probe() uses underlying MPI_Iprobe(), returns at most one pending message returns all pending messages
MPI_Reduce() supports any MATLAB function with MPI_Op_create() not implemented

Calls to the following MatlabMPI functions are not required with bcMPI, and may commented out or replaced with dummy implementations:

  • MatMPI_Comm_dir()
  • MatMPI_Comm_settings()
  • MatMPI_Delete_all()
  • MatMPI_Save_messages()

Missing/incomplete features

  • sparse matrices
  • scatter
  • scatter/gather - choose dimension(s)?
  • efficient _all collective communications (async core?)
  • support mixed machine environment - byte swapping, different index (long) sizes.
  • some examples were disabled, need to try again
Next: License