<PREV> <INDEX> <NEXT>

The MPI Library

Process control

MPI_Init(int *argc, char ***argv);

MPI_Finalize(void);

int MPI_Comm_spawn (char *command, char *argv[], int maxprocs, MPI_Info info,
int root, MPI_Comm comm, MPI_Comm *intercomm,

int array_of_errcodes[])


Group operations

MPI_Abort (MPI_Comm comm, int errcode);

MPI_Comm_size (MPI_Comm comm, int *size);

MPI_Comm_rank (MPI_Comm comm, int *rank);

MPI_Comm_dup (MPI_comm comm, MPI_comm *newcomm);

MPI_Comm_split (MPI_comm comm, int color, int key,
MPI_Comm *newcomm);

MPI_Comm_free (MPI_Comm *comm);

MPI_Intercomm_merge (MPI_Comm intercomm, int high,
MPI_Comm *newintracomm);

MPI_Comm_remote_size (MPI_Comm intercomm, int *size);


Message passing

  • point-to-point
  • broadcast

  • standard
  • buffered
  • synchronous
  • ready

  • source rank
  • tag
  • context
  • destination rank

  • blocking
  • non-blocking
MPI_Send (void *buf, int count, MPI_Datatype dtype, int dest, int tag,
MPI_Comm comm);
MPI_Recv (void *buf, int count, MPI_Datatype dtype, int source, int tag,
MPI_Comm comm, MPI_Status *status);

MPI_Get_count (MPI_Status *status, MPI_Datatype dtype, int *count);

MPI_Probe (int source, int tag, MPI_Comm comm, MPI_Status *status);


wildcards: MPI_ANY_SOURCE
MPI_ANY_TAG
      actual values: status.MPI_SOURCE
status.MPI_TAG
MPI_Isend (void *buf, int count, MPI_Datatype dtype, int dest, int tag,
MPI_Comm comm, MPI_Request *req);
MPI_Irecv (void *buf, int count, MPI_Datatype dtype, int source, int tag,
MPI_Comm comm, MPI_Request *req);

MPI_Test (MPI_Request *req, int *flag, MPI_Status *status);

MPI_Wait (MPI_Request *req, MPI_Status *status);

MPI_Iprobe (int source, int tag, MPI_Comm comm, int *flag,
MPI_Status *status);
MPI_Bcast (void *buf, int count, MPI_Datatype dtype, int root,
MPI_Comm comm);
MPI_Scatter (void *sendbuf, int sendcount, MPI_Datatype sendtype,
void *recvbuf, int recvcount, MPI_Datatype recvtype,
int root, MPI_Comm comm);
MPI_Gather (void *sendbuf, int sendcount, MPI_Datatype sendtype,
void *recvbuf, int recvcount, MPI_Datatype recvtype,
int root, MPI_Comm comm);
MPI_Reduce (void *sendbuf, void *recvbuf, int count, MPI_Datatype dtype, MPI_Op op, int root, MPI_Comm comm);
Operations
(commutative):
MPI_MAX maximum
MPI_MIN minimum
MPI_SUM sum
MPI_PROD product
MPI_LAND logical and
MPI_BAND bitwise and
MPI_LOR logical or
MPI_BOR bitwise or
MPI_LXOR logical exclusive or
MPI_BXOR bitwise exclusive or
Predefined 
datatypes:
MPI_CHAR signed char
MPI_SHORT signed short
MPI_INT signed int
MPI_LONG signed long
MPI_UNSIGNED_CHAR unsigned char
MPI_UNSIGNED_SHORT unsigned short
MPI_UNSIGNED unsigned int
MPI_UNSIGNED_LONG unsigned long
MPI_FLOAT float
MPI_DOUBLE double
MPI_LONG_DOUBLE long double
MPI_BYTE a raw byte
MPI_UB array elements displacement
MPI_PACKED packed type

Defining new types:

MPI_Type_Vector (int count, int blocklength, int stride,
MPI_Datatype oldtype, MPI_Datatype *newtype);
MPI_Type_struct (int count, int blocklengths[], MPI_Aint displacements[],
MPI_Datatype dtypes[], MPI_Datatype *newtype);

MPI_Address(void *data, MPI_Aint *displacement);

MPI_Type_commit(MPI_Datatype *type);


<PREV> <INDEX> <NEXT>