/* C bindings for Point-to-Point Communication */ int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count) int MPI_Bsend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) int MPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) int MPI_Rsend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) int MPI_Buffer_attach( void* buffer, int size) int MPI_Buffer_detach( void* buffer, int* size) int MPI_Isend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Ibsend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Issend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Irsend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Irecv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Wait(MPI_Request *request, MPI_Status *status) int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status) int MPI_Request_free(MPI_Request *request) int MPI_Waitany(int count, MPI_Request *array_of_requests, int *index, MPI_Status *status) int MPI_Testany(int count, MPI_Request *array_of_requests, int *index, int *flag, MPI_Status *status) int MPI_Waitall(int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses) int MPI_Testall(int count, MPI_Request *array_of_requests, int *flag, MPI_Status *array_of_statuses) int MPI_Waitsome(int incount, MPI_Request *array_of_requests, int *outcount, int *array_of_indices, MPI_Status *array_of_statuses) int MPI_Testsome(int incount, MPI_Request *array_of_requests, int *outcount, int *array_of_indices, MPI_Status *array_of_statuses) int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status) int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status) int MPI_Cancel(MPI_Request *request) int MPI_Test_cancelled(MPI_Status *status, int *flag) int MPI_Send_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Bsend_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Ssend_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Rsend_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Recv_init(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request) int MPI_Start(MPI_Request *request) int MPI_Startall(int count, MPI_Request *array_of_requests) int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, MPI_Datatype recvtag, MPI_Comm comm, MPI_Status *status) int MPI_Sendrecv_replace(void* buf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag, MPI_Comm comm, MPI_Status *status) int MPI_Type_contiguous(int count, MPI_Datatype oldtype, MPI_Datatype *newtype) int MPI_Type_vector(int count, int blocklength, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype) int MPI_Type_hvector(int count, int blocklength, MPI_Aint stride, MPI_Datatype oldtype, MPI_Datatype *newtype) int MPI_Type_indexed(int count, int *array_of_blocklengths, int *array_of_displacements, MPI_Datatype oldtype, MPI_Datatype *newtype) int MPI_Type_hindexed(int count, int *array_of_blocklengths, MPI_Aint *array_of_displacements, MPI_Datatype oldtype, MPI_Datatype *newtype) int MPI_Type_struct(int count, int *array_of_blocklengths, MPI_Aint *array_of_displacements, MPI_Datatype *array_of_types, MPI_Datatype *newtype) int MPI_Address(void* location, MPI_Aint *address) int MPI_Type_extent(MPI_Datatype datatype, MPI_Aint *extent) int MPI_Type_size(MPI_Datatype datatype, int *size) int MPI_Type_lb(MPI_Datatype datatype, MPI_Aint* displacement) int MPI_Type_ub(MPI_Datatype datatype, MPI_Aint* displacement) int MPI_Type_commit(MPI_Datatype *datatype) int MPI_Type_free(MPI_Datatype *datatype) int MPI_Get_elements(MPI_Status *status, MPI_Datatype datatype, int *count) int MPI_Pack(void* inbuf, int incount, MPI_Datatype datatype, void *outbuf, int outsize, int *position, MPI_Comm comm) int MPI_Unpack(void* inbuf, int insize, int *position, void *outbuf, int outcount, MPI_Datatype datatype, MPI_Comm comm) int MPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm, int *size) /* C Bindings for Collective Communication */ int MPI_Barrier(MPI_Comm comm ) int MPI_Bcast(void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm ) int MPI_Gather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) int MPI_Gatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm) int MPI_Scatter(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) int MPI_Scatterv(void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) int MPI_Allgather(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) int MPI_Allgatherv(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, MPI_Comm comm) int MPI_Alltoall(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) int MPI_Alltoallv(void* sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls, MPI_Datatype recvtype, MPI_Comm comm) int MPI_Reduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) int MPI_Op_create(MPI_User_function *function, int commute, MPI_Op *op) int MPI_Op_free( MPI_Op *op) int MPI_Allreduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) int MPI_Reduce_scatter(void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) int MPI_Scan(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) /* C Bindings for Groups, Contexts, and Communicators */ int MPI_Group_size(MPI_Group group, int *size) int MPI_Group_rank(MPI_Group group, int *rank) int MPI_Group_translate_ranks (MPI_Group group1, int n, int *ranks1, MPI_Group group2, int *ranks2) int MPI_Group_compare(MPI_Group group1,MPI_Group group2, int *result) int MPI_Comm_group(MPI_Comm comm, MPI_Group *group) int MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup) int MPI_Group_intersection(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup) int MPI_Group_difference(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup) int MPI_Group_incl(MPI_Group group, int n, int *ranks, MPI_Group *newgroup) int MPI_Group_excl(MPI_Group group, int n, int *ranks, MPI_Group *newgroup) int MPI_Group_range_incl(MPI_Group group, int n, int ranges[][3], MPI_Group *newgroup) int MPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], MPI_Group *newgroup) int MPI_Group_free(MPI_Group *group) int MPI_Comm_size(MPI_Comm comm, int *size) int MPI_Comm_rank(MPI_Comm comm, int *rank) int MPI_Comm_compare(MPI_Comm comm1,MPI_Comm comm2, int *result) int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm) int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm) int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm) int MPI_Comm_free(MPI_Comm *comm) int MPI_Comm_test_inter(MPI_Comm comm, int *flag) int MPI_Comm_remote_size(MPI_Comm comm, int *size) int MPI_Comm_remote_group(MPI_Comm comm, MPI_Group *group) int MPI_Intercomm_create(MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm, int remote_leader, int tag, MPI_Comm *newintercomm) int MPI_Intercomm_merge(MPI_Comm intercomm, int high, MPI_Comm *newintracomm) int MPI_Keyval_create(MPI_Copy_function *copy_fn, MPI_Delete_function *delete_fn, int *keyval, void* extra_state) int MPI_Keyval_free(int *keyval) int MPI_Attr_put(MPI_Comm comm, int keyval, void* attribute_val) int MPI_Attr_get(MPI_Comm comm, int keyval, void* attribute_val, int *flag) int MPI_Attr_delete(MPI_Comm comm, int keyval) /* C Bindings for Process Topologies */ int MPI_Cart_create(MPI_Comm comm_old, int ndims, int *dims, int *periods, int reorder, MPI_Comm *comm_cart) int MPI_Dims_create(int nnodes, int ndims, int *dims) int MPI_Graph_create(MPI_Comm comm_old, int nnodes, int *index, int *edges, int reorder, MPI_Comm *comm_graph) int MPI_Topo_test(MPI_Comm comm, int *status) int MPI_Graphdims_get(MPI_Comm comm, int *nnodes, int *nedges) int MPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges, int *index, int *edges) int MPI_Cartdim_get(MPI_Comm comm, int *ndims) int MPI_Cart_get(MPI_Comm comm, int maxdims, int *dims, int *periods, int *coords) int MPI_Cart_rank(MPI_Comm comm, int *coords, int *rank) int MPI_Cart_coords(MPI_Comm comm, int rank, int maxdims, int *coords) int MPI_Graph_neighbors_count(MPI_Comm comm, int rank, int *nneighbors) int MPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors, int *neighbors) int MPI_Cart_shift(MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest) int MPI_Cart_sub(MPI_Comm comm, int *remain_dims, MPI_Comm *newcomm) int MPI_Cart_map(MPI_Comm comm, int ndims, int *dims, int *periods, int *newrank) int MPI_Graph_map(MPI_Comm comm, int nnodes, int *index, int *edges, int *newrank) /* C bindings for Environmental Inquiry */ int MPI_Get_processor_name(char *name, int *resultlen) int MPI_Errhandler_create(MPI_Handler_function *function, MPI_Errhandler *errhandler) int MPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler) int MPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler) int MPI_Errhandler_free(MPI_Errhandler *errhandler) int MPI_Error_string(int errorcode, char *string, int *resultlen) int MPI_Error_class(int errorcode, int *errorclass) int double MPI_Wtime(void) int double MPI_Wtick(void) int MPI_Init(int *argc, char ***argv) int MPI_Finalize(void) int MPI_Initialized(int *flag) int MPI_Abort(MPI_Comm comm, int errorcode) /* C Bindings for Profiling */ int MPI_Pcontrol(const int level, ...)