awips2/pythonPackages/scientific/Include/Scientific/PyMPI_API.h
2016-06-27 15:10:22 -05:00

748 lines
27 KiB
C
Executable file

/*
* C API functions
*/
#define PyMPICommunicator_Type_NUM 0
#define PyMPIRequest_Type_NUM 1
#define PyMPI_DuplicateCommunicator_RET PyObject *
#define PyMPI_DuplicateCommunicator_PROTO Py_PROTO((PyMPICommunicatorObject *comm))
#define PyMPI_DuplicateCommunicator_NUM 2
#define PyMPI_SubsetCommunicator_RET PyObject *
#define PyMPI_SubsetCommunicator_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyArrayObject *array))
#define PyMPI_SubsetCommunicator_NUM 3
#define PyMPI_Barrier_RET int
#define PyMPI_Barrier_PROTO Py_PROTO((PyMPICommunicatorObject *comm))
#define PyMPI_Barrier_NUM 4
#define PyMPI_Send_RET int
#define PyMPI_Send_PROTO Py_PROTO((PyMPICommunicatorObject *comm, void *data, int mpi_type, int len, int dest, int tag))
#define PyMPI_Send_NUM 5
#define PyMPI_SendArray_RET int
#define PyMPI_SendArray_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyArrayObject *array, int dest, int tag))
#define PyMPI_SendArray_NUM 6
#define PyMPI_SendString_RET int
#define PyMPI_SendString_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyStringObject *string, int dest, int tag))
#define PyMPI_SendString_NUM 7
#define PyMPI_SendArrayNonBlocking_RET PyObject *
#define PyMPI_SendArrayNonBlocking_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyArrayObject *array, int dest, int tag))
#define PyMPI_SendArrayNonBlocking_NUM 8
#define PyMPI_SendStringNonBlocking_RET PyObject *
#define PyMPI_SendStringNonBlocking_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyStringObject *string, int dest, int tag))
#define PyMPI_SendStringNonBlocking_NUM 9
#define PyMPI_Receive_RET int
#define PyMPI_Receive_PROTO Py_PROTO((PyMPICommunicatorObject *comm, void *buffer, int mpi_type, int len, int source, int tag, int *sourcep, int *tagp, int *lenp))
#define PyMPI_Receive_NUM 10
#define PyMPI_ReceiveArray_RET int
#define PyMPI_ReceiveArray_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyArrayObject *array, int source, int tag, int *sourcep, int *tagp, int *lenp))
#define PyMPI_ReceiveArray_NUM 11
#define PyMPI_ReceiveString_RET PyObject *
#define PyMPI_ReceiveString_PROTO Py_PROTO((PyMPICommunicatorObject *comm, int source, int tag, int *sourcep, int *tagp))
#define PyMPI_ReceiveString_NUM 12
#define PyMPI_ReceiveArrayNonBlocking_RET PyObject *
#define PyMPI_ReceiveArrayNonBlocking_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyArrayObject *array, int source, int tag))
#define PyMPI_ReceiveArrayNonBlocking_NUM 13
#define PyMPI_ProbeNonBlocking_RET int
#define PyMPI_ProbeNonBlocking_PROTO Py_PROTO((PyMPICommunicatorObject *comm, int source, int tag, int *flagp, int *sourcep, int *tagp))
#define PyMPI_ProbeNonBlocking_NUM 14
#define PyMPI_Broadcast_RET int
#define PyMPI_Broadcast_PROTO Py_PROTO((PyMPICommunicatorObject *comm, void *buffer, int mpi_type, int count, int root))
#define PyMPI_Broadcast_NUM 15
#define PyMPI_BroadcastArray_RET int
#define PyMPI_BroadcastArray_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyArrayObject *array, int root))
#define PyMPI_BroadcastArray_NUM 16
#define PyMPI_Share_RET int
#define PyMPI_Share_PROTO Py_PROTO((PyMPICommunicatorObject *comm, void *send, void *receive, int mpi_type, int count))
#define PyMPI_Share_NUM 17
#define PyMPI_ShareArray_RET int
#define PyMPI_ShareArray_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyArrayObject *send, PyArrayObject *receive))
#define PyMPI_ShareArray_NUM 18
#define PyMPI_Abort_RET int
#define PyMPI_Abort_PROTO Py_PROTO((PyMPICommunicatorObject *comm, int err))
#define PyMPI_Abort_NUM 19
#define PyMPI_Reduce_RET int
#define PyMPI_Reduce_PROTO Py_PROTO((PyMPICommunicatorObject *comm, void *sendbuf, void *recvbuf, int count, int datatype, PyMPIOperationObject *op, int root))
#define PyMPI_Reduce_NUM 20
#define PyMPI_Allreduce_RET int
#define PyMPI_Allreduce_PROTO Py_PROTO((PyMPICommunicatorObject *comm, void *sendbuf, void *recvbuf, int count, int datatype, PyMPIOperationObject *op))
#define PyMPI_Allreduce_NUM 21
#define PyMPI_ReduceArray_RET int
#define PyMPI_ReduceArray_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyArrayObject *send, PyArrayObject *receive, PyMPIOperationObject *op, int root))
#define PyMPI_ReduceArray_NUM 22
#define PyMPI_AllreduceArray_RET int
#define PyMPI_AllreduceArray_PROTO Py_PROTO((PyMPICommunicatorObject *comm, PyArrayObject *send, PyArrayObject *receive, PyMPIOperationObject *op))
#define PyMPI_AllreduceArray_NUM 23
#define PyMPI_Wait_RET int
#define PyMPI_Wait_PROTO Py_PROTO((PyMPIRequestObject *comm, void *s))
#define PyMPI_Wait_NUM 24
#define PyMPI_Test_RET int
#define PyMPI_Test_PROTO Py_PROTO((PyMPIRequestObject *comm, int *flag, void *s))
#define PyMPI_Test_NUM 25
#define MPI_Abort_RET int
#define MPI_Abort_PROTO Py_PROTO((MPI_Comm comm, int errorcode))
#define MPI_Abort_NUM 26
#define MPI_Allgather_RET int
#define MPI_Allgather_PROTO Py_PROTO((void *sendbuffer, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm))
#define MPI_Allgather_NUM 27
#define MPI_Allgatherv_RET int
#define MPI_Allgatherv_PROTO Py_PROTO((void *sendbuffer, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcount, int *displs, MPI_Datatype recvtype, MPI_Comm comm))
#define MPI_Allgatherv_NUM 28
#define MPI_Allreduce_RET int
#define MPI_Allreduce_PROTO Py_PROTO((void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm))
#define MPI_Allreduce_NUM 29
#define MPI_Alltoall_RET int
#define MPI_Alltoall_PROTO Py_PROTO((void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm))
#define MPI_Alltoall_NUM 30
#define MPI_Alltoallv_RET int
#define MPI_Alltoallv_PROTO Py_PROTO((void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype recvtype, MPI_Comm comm))
#define MPI_Alltoallv_NUM 31
#define MPI_Barrier_RET int
#define MPI_Barrier_PROTO Py_PROTO((MPI_Comm comm))
#define MPI_Barrier_NUM 32
#define MPI_Bcast_RET int
#define MPI_Bcast_PROTO Py_PROTO((void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm))
#define MPI_Bcast_NUM 33
#define MPI_Bsend_RET int
#define MPI_Bsend_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm))
#define MPI_Bsend_NUM 34
#define MPI_Comm_dup_RET int
#define MPI_Comm_dup_PROTO Py_PROTO((MPI_Comm comm, MPI_Comm *newcomm))
#define MPI_Comm_dup_NUM 35
#define MPI_Comm_group_RET int
#define MPI_Comm_group_PROTO Py_PROTO((MPI_Comm comm, MPI_Group *group))
#define MPI_Comm_group_NUM 36
#define MPI_Group_incl_RET int
#define MPI_Group_incl_PROTO Py_PROTO((MPI_Group group, int n, int *ranks, MPI_Group *newgroup))
#define MPI_Group_incl_NUM 37
#define MPI_Comm_create_RET int
#define MPI_Comm_create_PROTO Py_PROTO((MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm))
#define MPI_Comm_create_NUM 38
#define MPI_Group_free_RET int
#define MPI_Group_free_PROTO Py_PROTO((MPI_Group *group))
#define MPI_Group_free_NUM 39
#define MPI_Comm_free_RET int
#define MPI_Comm_free_PROTO Py_PROTO((MPI_Comm *comm))
#define MPI_Comm_free_NUM 40
#define MPI_Comm_rank_RET int
#define MPI_Comm_rank_PROTO Py_PROTO((MPI_Comm comm, int *rank))
#define MPI_Comm_rank_NUM 41
#define MPI_Comm_size_RET int
#define MPI_Comm_size_PROTO Py_PROTO((MPI_Comm comm, int *size))
#define MPI_Comm_size_NUM 42
#define MPI_Error_string_RET int
#define MPI_Error_string_PROTO Py_PROTO((int errorcode, char *string, int *resultlen))
#define MPI_Error_string_NUM 43
#define MPI_Finalize_RET int
#define MPI_Finalize_PROTO Py_PROTO((void))
#define MPI_Finalize_NUM 44
#define MPI_Gather_RET int
#define MPI_Gather_PROTO Py_PROTO((void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm))
#define MPI_Gather_NUM 45
#define MPI_Gatherv_RET int
#define MPI_Gatherv_PROTO Py_PROTO((void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm))
#define MPI_Gatherv_NUM 46
#define MPI_Get_count_RET int
#define MPI_Get_count_PROTO Py_PROTO((MPI_Status *status, MPI_Datatype datatype, int *count))
#define MPI_Get_count_NUM 47
#define MPI_Ibsend_RET int
#define MPI_Ibsend_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request))
#define MPI_Ibsend_NUM 48
#define MPI_Init_RET int
#define MPI_Init_PROTO Py_PROTO((int *argc, char ***argv))
#define MPI_Init_NUM 49
#define MPI_Initialized_RET int
#define MPI_Initialized_PROTO Py_PROTO((int *flag))
#define MPI_Initialized_NUM 50
#define MPI_Iprobe_RET int
#define MPI_Iprobe_PROTO Py_PROTO((int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status))
#define MPI_Iprobe_NUM 51
#define MPI_Irecv_RET int
#define MPI_Irecv_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request))
#define MPI_Irecv_NUM 52
#define MPI_Irsend_RET int
#define MPI_Irsend_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request))
#define MPI_Irsend_NUM 53
#define MPI_Isend_RET int
#define MPI_Isend_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request))
#define MPI_Isend_NUM 54
#define MPI_Issend_RET int
#define MPI_Issend_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request))
#define MPI_Issend_NUM 55
#define MPI_Probe_RET int
#define MPI_Probe_PROTO Py_PROTO((int source, int tag, MPI_Comm comm, MPI_Status *status))
#define MPI_Probe_NUM 56
#define MPI_Recv_RET int
#define MPI_Recv_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status))
#define MPI_Recv_NUM 57
#define MPI_Reduce_RET int
#define MPI_Reduce_PROTO Py_PROTO((void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm))
#define MPI_Reduce_NUM 58
#define MPI_Reduce_scatter_RET int
#define MPI_Reduce_scatter_PROTO Py_PROTO((void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm))
#define MPI_Reduce_scatter_NUM 59
#define MPI_Rsend_RET int
#define MPI_Rsend_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm))
#define MPI_Rsend_NUM 60
#define MPI_Scatter_RET int
#define MPI_Scatter_PROTO Py_PROTO((void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm))
#define MPI_Scatter_NUM 61
#define MPI_Scatterv_RET int
#define MPI_Scatterv_PROTO Py_PROTO((void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm))
#define MPI_Scatterv_NUM 62
#define MPI_Send_RET int
#define MPI_Send_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm))
#define MPI_Send_NUM 63
#define MPI_Sendrecv_RET int
#define MPI_Sendrecv_PROTO Py_PROTO((void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status))
#define MPI_Sendrecv_NUM 64
#define MPI_Ssend_RET int
#define MPI_Ssend_PROTO Py_PROTO((void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm))
#define MPI_Ssend_NUM 65
#define MPI_Test_RET int
#define MPI_Test_PROTO Py_PROTO((MPI_Request *request, int *flag, MPI_Status *status))
#define MPI_Test_NUM 66
#define MPI_Testall_RET int
#define MPI_Testall_PROTO Py_PROTO((int count, MPI_Request *array_of_requests, int *flag, MPI_Status *array_of_statuses))
#define MPI_Testall_NUM 67
#define MPI_Testany_RET int
#define MPI_Testany_PROTO Py_PROTO((int count, MPI_Request *array_of_requests, int *index, int *flag, MPI_Status *status))
#define MPI_Testany_NUM 68
#define MPI_Wait_RET int
#define MPI_Wait_PROTO Py_PROTO((MPI_Request *request, MPI_Status *status))
#define MPI_Wait_NUM 69
#define MPI_Waitall_RET int
#define MPI_Waitall_PROTO Py_PROTO((int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses))
#define MPI_Waitall_NUM 70
#define MPI_Waitany_RET int
#define MPI_Waitany_PROTO Py_PROTO((int count, MPI_Request *array_of_requests, int *index, MPI_Status *array_of_statuses))
#define MPI_Waitany_NUM 71
#define MPI_Wtick_RET double
#define MPI_Wtick_PROTO Py_PROTO((void))
#define MPI_Wtick_NUM 72
#define MPI_Wtime_RET double
#define MPI_Wtime_PROTO Py_PROTO((void))
#define MPI_Wtime_NUM 73
#define PyMPI_API_pointers 74
#ifdef _MPI_MODULE
statichere PyTypeObject PyMPICommunicator_Type;
#define PyMPICommunicator_Check(op) ((op)->ob_type == &PyMPICommunicator_Type)
statichere PyTypeObject PyMPIRequest_Type;
#define PyMPIRequest_Check(op) ((op)->ob_type == &PyMPIRequest_Type)
static PyMPI_DuplicateCommunicator_RET PyMPI_DuplicateCommunicator PyMPI_DuplicateCommunicator_PROTO;
static PyMPI_SubsetCommunicator_RET PyMPI_SubsetCommunicator PyMPI_SubsetCommunicator_PROTO;
static PyMPI_Barrier_RET PyMPI_Barrier PyMPI_Barrier_PROTO;
static PyMPI_Send_RET PyMPI_Send PyMPI_Send_PROTO;
static PyMPI_SendArray_RET PyMPI_SendArray PyMPI_SendArray_PROTO;
static PyMPI_SendString_RET PyMPI_SendString PyMPI_SendString_PROTO;
static PyMPI_SendArrayNonBlocking_RET PyMPI_SendArrayNonBlocking PyMPI_SendArrayNonBlocking_PROTO;
static PyMPI_SendStringNonBlocking_RET PyMPI_SendStringNonBlocking PyMPI_SendStringNonBlocking_PROTO;
static PyMPI_Receive_RET PyMPI_Receive PyMPI_Receive_PROTO;
static PyMPI_ReceiveArray_RET PyMPI_ReceiveArray PyMPI_ReceiveArray_PROTO;
static PyMPI_ReceiveString_RET PyMPI_ReceiveString PyMPI_ReceiveString_PROTO;
static PyMPI_ReceiveArrayNonBlocking_RET PyMPI_ReceiveArrayNonBlocking PyMPI_ReceiveArrayNonBlocking_PROTO;
static PyMPI_ProbeNonBlocking_RET PyMPI_ProbeNonBlocking PyMPI_ProbeNonBlocking_PROTO;
static PyMPI_Broadcast_RET PyMPI_Broadcast PyMPI_Broadcast_PROTO;
static PyMPI_BroadcastArray_RET PyMPI_BroadcastArray PyMPI_BroadcastArray_PROTO;
static PyMPI_Share_RET PyMPI_Share PyMPI_Share_PROTO;
static PyMPI_ShareArray_RET PyMPI_ShareArray PyMPI_ShareArray_PROTO;
static PyMPI_Abort_RET PyMPI_Abort PyMPI_Abort_PROTO;
static PyMPI_Reduce_RET PyMPI_Reduce PyMPI_Reduce_PROTO;
static PyMPI_Allreduce_RET PyMPI_Allreduce PyMPI_Allreduce_PROTO;
static PyMPI_ReduceArray_RET PyMPI_ReduceArray PyMPI_ReduceArray_PROTO;
static PyMPI_AllreduceArray_RET PyMPI_AllreduceArray PyMPI_AllreduceArray_PROTO;
static PyMPI_Wait_RET PyMPI_Wait PyMPI_Wait_PROTO;
static PyMPI_Test_RET PyMPI_Test PyMPI_Test_PROTO;
#define set_PyMPI_API_pointers(){ \
PyMPI_API[PyMPICommunicator_Type_NUM] = (void *)&PyMPICommunicator_Type; \
PyMPI_API[PyMPIRequest_Type_NUM] = (void *)&PyMPIRequest_Type; \
PyMPI_API[PyMPI_DuplicateCommunicator_NUM] = (void *)&PyMPI_DuplicateCommunicator; \
PyMPI_API[PyMPI_SubsetCommunicator_NUM] = (void *)&PyMPI_SubsetCommunicator; \
PyMPI_API[PyMPI_Barrier_NUM] = (void *)&PyMPI_Barrier; \
PyMPI_API[PyMPI_Send_NUM] = (void *)&PyMPI_Send; \
PyMPI_API[PyMPI_SendArray_NUM] = (void *)&PyMPI_SendArray; \
PyMPI_API[PyMPI_SendString_NUM] = (void *)&PyMPI_SendString; \
PyMPI_API[PyMPI_SendArrayNonBlocking_NUM] = (void *)&PyMPI_SendArrayNonBlocking; \
PyMPI_API[PyMPI_SendStringNonBlocking_NUM] = (void *)&PyMPI_SendStringNonBlocking; \
PyMPI_API[PyMPI_Receive_NUM] = (void *)&PyMPI_Receive; \
PyMPI_API[PyMPI_ReceiveArray_NUM] = (void *)&PyMPI_ReceiveArray; \
PyMPI_API[PyMPI_ReceiveString_NUM] = (void *)&PyMPI_ReceiveString; \
PyMPI_API[PyMPI_ReceiveArrayNonBlocking_NUM] = (void *)&PyMPI_ReceiveArrayNonBlocking; \
PyMPI_API[PyMPI_ProbeNonBlocking_NUM] = (void *)&PyMPI_ProbeNonBlocking; \
PyMPI_API[PyMPI_Broadcast_NUM] = (void *)&PyMPI_Broadcast; \
PyMPI_API[PyMPI_BroadcastArray_NUM] = (void *)&PyMPI_BroadcastArray; \
PyMPI_API[PyMPI_Share_NUM] = (void *)&PyMPI_Share; \
PyMPI_API[PyMPI_ShareArray_NUM] = (void *)&PyMPI_ShareArray; \
PyMPI_API[PyMPI_Abort_NUM] = (void *)&PyMPI_Abort; \
PyMPI_API[PyMPI_Reduce_NUM] = (void *)&PyMPI_Reduce; \
PyMPI_API[PyMPI_Allreduce_NUM] = (void *)&PyMPI_Allreduce; \
PyMPI_API[PyMPI_ReduceArray_NUM] = (void *)&PyMPI_ReduceArray; \
PyMPI_API[PyMPI_AllreduceArray_NUM] = (void *)&PyMPI_AllreduceArray; \
PyMPI_API[PyMPI_Wait_NUM] = (void *)&PyMPI_Wait; \
PyMPI_API[PyMPI_Test_NUM] = (void *)&PyMPI_Test; \
PyMPI_API[MPI_Abort_NUM] = (void *)&MPI_Abort; \
PyMPI_API[MPI_Allgather_NUM] = (void *)&MPI_Allgather; \
PyMPI_API[MPI_Allgatherv_NUM] = (void *)&MPI_Allgatherv; \
PyMPI_API[MPI_Allreduce_NUM] = (void *)&MPI_Allreduce; \
PyMPI_API[MPI_Alltoall_NUM] = (void *)&MPI_Alltoall; \
PyMPI_API[MPI_Alltoallv_NUM] = (void *)&MPI_Alltoallv; \
PyMPI_API[MPI_Barrier_NUM] = (void *)&MPI_Barrier; \
PyMPI_API[MPI_Bcast_NUM] = (void *)&MPI_Bcast; \
PyMPI_API[MPI_Bsend_NUM] = (void *)&MPI_Bsend; \
PyMPI_API[MPI_Comm_dup_NUM] = (void *)&MPI_Comm_dup; \
PyMPI_API[MPI_Comm_group_NUM] = (void *)&MPI_Comm_group; \
PyMPI_API[MPI_Group_incl_NUM] = (void *)&MPI_Group_incl; \
PyMPI_API[MPI_Comm_create_NUM] = (void *)&MPI_Comm_create; \
PyMPI_API[MPI_Group_free_NUM] = (void *)&MPI_Group_free; \
PyMPI_API[MPI_Comm_free_NUM] = (void *)&MPI_Comm_free; \
PyMPI_API[MPI_Comm_rank_NUM] = (void *)&MPI_Comm_rank; \
PyMPI_API[MPI_Comm_size_NUM] = (void *)&MPI_Comm_size; \
PyMPI_API[MPI_Error_string_NUM] = (void *)&MPI_Error_string; \
PyMPI_API[MPI_Finalize_NUM] = (void *)&MPI_Finalize; \
PyMPI_API[MPI_Gather_NUM] = (void *)&MPI_Gather; \
PyMPI_API[MPI_Gatherv_NUM] = (void *)&MPI_Gatherv; \
PyMPI_API[MPI_Get_count_NUM] = (void *)&MPI_Get_count; \
PyMPI_API[MPI_Ibsend_NUM] = (void *)&MPI_Ibsend; \
PyMPI_API[MPI_Init_NUM] = (void *)&MPI_Init; \
PyMPI_API[MPI_Initialized_NUM] = (void *)&MPI_Initialized; \
PyMPI_API[MPI_Iprobe_NUM] = (void *)&MPI_Iprobe; \
PyMPI_API[MPI_Irecv_NUM] = (void *)&MPI_Irecv; \
PyMPI_API[MPI_Irsend_NUM] = (void *)&MPI_Irsend; \
PyMPI_API[MPI_Isend_NUM] = (void *)&MPI_Isend; \
PyMPI_API[MPI_Issend_NUM] = (void *)&MPI_Issend; \
PyMPI_API[MPI_Probe_NUM] = (void *)&MPI_Probe; \
PyMPI_API[MPI_Recv_NUM] = (void *)&MPI_Recv; \
PyMPI_API[MPI_Reduce_NUM] = (void *)&MPI_Reduce; \
PyMPI_API[MPI_Reduce_scatter_NUM] = (void *)&MPI_Reduce_scatter; \
PyMPI_API[MPI_Rsend_NUM] = (void *)&MPI_Rsend; \
PyMPI_API[MPI_Scatter_NUM] = (void *)&MPI_Scatter; \
PyMPI_API[MPI_Scatterv_NUM] = (void *)&MPI_Scatterv; \
PyMPI_API[MPI_Send_NUM] = (void *)&MPI_Send; \
PyMPI_API[MPI_Sendrecv_NUM] = (void *)&MPI_Sendrecv; \
PyMPI_API[MPI_Ssend_NUM] = (void *)&MPI_Ssend; \
PyMPI_API[MPI_Test_NUM] = (void *)&MPI_Test; \
PyMPI_API[MPI_Testall_NUM] = (void *)&MPI_Testall; \
PyMPI_API[MPI_Testany_NUM] = (void *)&MPI_Testany; \
PyMPI_API[MPI_Wait_NUM] = (void *)&MPI_Wait; \
PyMPI_API[MPI_Waitall_NUM] = (void *)&MPI_Waitall; \
PyMPI_API[MPI_Waitany_NUM] = (void *)&MPI_Waitany; \
PyMPI_API[MPI_Wtick_NUM] = (void *)&MPI_Wtick; \
PyMPI_API[MPI_Wtime_NUM] = (void *)&MPI_Wtime; \
}
#else
#ifndef PYMPI_API_LINKAGE
#define PYMPI_API_LINKAGE static
#endif
PYMPI_API_LINKAGE void **PyMPI_API;
#define PyMPICommunicator_Check(op) \
((op)->ob_type == (PyTypePbject *)PyMPI_API[PyMPICommunicator_Type_Num])
#define PyMPIRequest_Check(op) \
((op)->ob_type == (PyTypePbject *)PyMPI_API[PyMPIRequest_Type_Num])
#define PyMPI_DuplicateCommunicator \
(*(PyMPI_DuplicateCommunicator_RET (*)PyMPI_DuplicateCommunicator_PROTO) \
PyMPI_API[PyMPI_DuplicateCommunicator_NUM])
#define PyMPI_SubsetCommunicator \
(*(PyMPI_SubsetCommunicator_RET (*)PyMPI_SubsetCommunicator_PROTO) \
PyMPI_API[PyMPI_SubsetCommunicator_NUM])
#define PyMPI_Barrier \
(*(PyMPI_Barrier_RET (*)PyMPI_Barrier_PROTO) \
PyMPI_API[PyMPI_Barrier_NUM])
#define PyMPI_Send \
(*(PyMPI_Send_RET (*)PyMPI_Send_PROTO) \
PyMPI_API[PyMPI_Send_NUM])
#define PyMPI_SendArray \
(*(PyMPI_SendArray_RET (*)PyMPI_SendArray_PROTO) \
PyMPI_API[PyMPI_SendArray_NUM])
#define PyMPI_SendString \
(*(PyMPI_SendString_RET (*)PyMPI_SendString_PROTO) \
PyMPI_API[PyMPI_SendString_NUM])
#define PyMPI_SendArrayNonBlocking \
(*(PyMPI_SendArrayNonBlocking_RET (*)PyMPI_SendArrayNonBlocking_PROTO) \
PyMPI_API[PyMPI_SendArrayNonBlocking_NUM])
#define PyMPI_SendStringNonBlocking \
(*(PyMPI_SendStringNonBlocking_RET (*)PyMPI_SendStringNonBlocking_PROTO) \
PyMPI_API[PyMPI_SendStringNonBlocking_NUM])
#define PyMPI_Receive \
(*(PyMPI_Receive_RET (*)PyMPI_Receive_PROTO) \
PyMPI_API[PyMPI_Receive_NUM])
#define PyMPI_ReceiveArray \
(*(PyMPI_ReceiveArray_RET (*)PyMPI_ReceiveArray_PROTO) \
PyMPI_API[PyMPI_ReceiveArray_NUM])
#define PyMPI_ReceiveString \
(*(PyMPI_ReceiveString_RET (*)PyMPI_ReceiveString_PROTO) \
PyMPI_API[PyMPI_ReceiveString_NUM])
#define PyMPI_ReceiveArrayNonBlocking \
(*(PyMPI_ReceiveArrayNonBlocking_RET (*)PyMPI_ReceiveArrayNonBlocking_PROTO) \
PyMPI_API[PyMPI_ReceiveArrayNonBlocking_NUM])
#define PyMPI_ProbeNonBlocking \
(*(PyMPI_ProbeNonBlocking_RET (*)PyMPI_ProbeNonBlocking_PROTO) \
PyMPI_API[PyMPI_ProbeNonBlocking_NUM])
#define PyMPI_Broadcast \
(*(PyMPI_Broadcast_RET (*)PyMPI_Broadcast_PROTO) \
PyMPI_API[PyMPI_Broadcast_NUM])
#define PyMPI_BroadcastArray \
(*(PyMPI_BroadcastArray_RET (*)PyMPI_BroadcastArray_PROTO) \
PyMPI_API[PyMPI_BroadcastArray_NUM])
#define PyMPI_Share \
(*(PyMPI_Share_RET (*)PyMPI_Share_PROTO) \
PyMPI_API[PyMPI_Share_NUM])
#define PyMPI_ShareArray \
(*(PyMPI_ShareArray_RET (*)PyMPI_ShareArray_PROTO) \
PyMPI_API[PyMPI_ShareArray_NUM])
#define PyMPI_Abort \
(*(PyMPI_Abort_RET (*)PyMPI_Abort_PROTO) \
PyMPI_API[PyMPI_Abort_NUM])
#define PyMPI_Reduce \
(*(PyMPI_Reduce_RET (*)PyMPI_Reduce_PROTO) \
PyMPI_API[PyMPI_Reduce_NUM])
#define PyMPI_Allreduce \
(*(PyMPI_Allreduce_RET (*)PyMPI_Allreduce_PROTO) \
PyMPI_API[PyMPI_Allreduce_NUM])
#define PyMPI_ReduceArray \
(*(PyMPI_ReduceArray_RET (*)PyMPI_ReduceArray_PROTO) \
PyMPI_API[PyMPI_ReduceArray_NUM])
#define PyMPI_AllreduceArray \
(*(PyMPI_AllreduceArray_RET (*)PyMPI_AllreduceArray_PROTO) \
PyMPI_API[PyMPI_AllreduceArray_NUM])
#define PyMPI_Wait \
(*(PyMPI_Wait_RET (*)PyMPI_Wait_PROTO) \
PyMPI_API[PyMPI_Wait_NUM])
#define PyMPI_Test \
(*(PyMPI_Test_RET (*)PyMPI_Test_PROTO) \
PyMPI_API[PyMPI_Test_NUM])
#define MPI_Abort \
(*(MPI_Abort_RET (*)MPI_Abort_PROTO) \
PyMPI_API[MPI_Abort_NUM])
#define MPI_Allgather \
(*(MPI_Allgather_RET (*)MPI_Allgather_PROTO) \
PyMPI_API[MPI_Allgather_NUM])
#define MPI_Allgatherv \
(*(MPI_Allgatherv_RET (*)MPI_Allgatherv_PROTO) \
PyMPI_API[MPI_Allgatherv_NUM])
#define MPI_Allreduce \
(*(MPI_Allreduce_RET (*)MPI_Allreduce_PROTO) \
PyMPI_API[MPI_Allreduce_NUM])
#define MPI_Alltoall \
(*(MPI_Alltoall_RET (*)MPI_Alltoall_PROTO) \
PyMPI_API[MPI_Alltoall_NUM])
#define MPI_Alltoallv \
(*(MPI_Alltoallv_RET (*)MPI_Alltoallv_PROTO) \
PyMPI_API[MPI_Alltoallv_NUM])
#define MPI_Barrier \
(*(MPI_Barrier_RET (*)MPI_Barrier_PROTO) \
PyMPI_API[MPI_Barrier_NUM])
#define MPI_Bcast \
(*(MPI_Bcast_RET (*)MPI_Bcast_PROTO) \
PyMPI_API[MPI_Bcast_NUM])
#define MPI_Bsend \
(*(MPI_Bsend_RET (*)MPI_Bsend_PROTO) \
PyMPI_API[MPI_Bsend_NUM])
#define MPI_Comm_dup \
(*(MPI_Comm_dup_RET (*)MPI_Comm_dup_PROTO) \
PyMPI_API[MPI_Comm_dup_NUM])
#define MPI_Comm_group \
(*(MPI_Comm_group_RET (*)MPI_Comm_group_PROTO) \
PyMPI_API[MPI_Comm_group_NUM])
#define MPI_Group_incl \
(*(MPI_Group_incl_RET (*)MPI_Group_incl_PROTO) \
PyMPI_API[MPI_Group_incl_NUM])
#define MPI_Comm_create \
(*(MPI_Comm_create_RET (*)MPI_Comm_create_PROTO) \
PyMPI_API[MPI_Comm_create_NUM])
#define MPI_Group_free \
(*(MPI_Group_free_RET (*)MPI_Group_free_PROTO) \
PyMPI_API[MPI_Group_free_NUM])
#define MPI_Comm_free \
(*(MPI_Comm_free_RET (*)MPI_Comm_free_PROTO) \
PyMPI_API[MPI_Comm_free_NUM])
#define MPI_Comm_rank \
(*(MPI_Comm_rank_RET (*)MPI_Comm_rank_PROTO) \
PyMPI_API[MPI_Comm_rank_NUM])
#define MPI_Comm_size \
(*(MPI_Comm_size_RET (*)MPI_Comm_size_PROTO) \
PyMPI_API[MPI_Comm_size_NUM])
#define MPI_Error_string \
(*(MPI_Error_string_RET (*)MPI_Error_string_PROTO) \
PyMPI_API[MPI_Error_string_NUM])
#define MPI_Finalize \
(*(MPI_Finalize_RET (*)MPI_Finalize_PROTO) \
PyMPI_API[MPI_Finalize_NUM])
#define MPI_Gather \
(*(MPI_Gather_RET (*)MPI_Gather_PROTO) \
PyMPI_API[MPI_Gather_NUM])
#define MPI_Gatherv \
(*(MPI_Gatherv_RET (*)MPI_Gatherv_PROTO) \
PyMPI_API[MPI_Gatherv_NUM])
#define MPI_Get_count \
(*(MPI_Get_count_RET (*)MPI_Get_count_PROTO) \
PyMPI_API[MPI_Get_count_NUM])
#define MPI_Ibsend \
(*(MPI_Ibsend_RET (*)MPI_Ibsend_PROTO) \
PyMPI_API[MPI_Ibsend_NUM])
#define MPI_Init \
(*(MPI_Init_RET (*)MPI_Init_PROTO) \
PyMPI_API[MPI_Init_NUM])
#define MPI_Initialized \
(*(MPI_Initialized_RET (*)MPI_Initialized_PROTO) \
PyMPI_API[MPI_Initialized_NUM])
#define MPI_Iprobe \
(*(MPI_Iprobe_RET (*)MPI_Iprobe_PROTO) \
PyMPI_API[MPI_Iprobe_NUM])
#define MPI_Irecv \
(*(MPI_Irecv_RET (*)MPI_Irecv_PROTO) \
PyMPI_API[MPI_Irecv_NUM])
#define MPI_Irsend \
(*(MPI_Irsend_RET (*)MPI_Irsend_PROTO) \
PyMPI_API[MPI_Irsend_NUM])
#define MPI_Isend \
(*(MPI_Isend_RET (*)MPI_Isend_PROTO) \
PyMPI_API[MPI_Isend_NUM])
#define MPI_Issend \
(*(MPI_Issend_RET (*)MPI_Issend_PROTO) \
PyMPI_API[MPI_Issend_NUM])
#define MPI_Probe \
(*(MPI_Probe_RET (*)MPI_Probe_PROTO) \
PyMPI_API[MPI_Probe_NUM])
#define MPI_Recv \
(*(MPI_Recv_RET (*)MPI_Recv_PROTO) \
PyMPI_API[MPI_Recv_NUM])
#define MPI_Reduce \
(*(MPI_Reduce_RET (*)MPI_Reduce_PROTO) \
PyMPI_API[MPI_Reduce_NUM])
#define MPI_Reduce_scatter \
(*(MPI_Reduce_scatter_RET (*)MPI_Reduce_scatter_PROTO) \
PyMPI_API[MPI_Reduce_scatter_NUM])
#define MPI_Rsend \
(*(MPI_Rsend_RET (*)MPI_Rsend_PROTO) \
PyMPI_API[MPI_Rsend_NUM])
#define MPI_Scatter \
(*(MPI_Scatter_RET (*)MPI_Scatter_PROTO) \
PyMPI_API[MPI_Scatter_NUM])
#define MPI_Scatterv \
(*(MPI_Scatterv_RET (*)MPI_Scatterv_PROTO) \
PyMPI_API[MPI_Scatterv_NUM])
#define MPI_Send \
(*(MPI_Send_RET (*)MPI_Send_PROTO) \
PyMPI_API[MPI_Send_NUM])
#define MPI_Sendrecv \
(*(MPI_Sendrecv_RET (*)MPI_Sendrecv_PROTO) \
PyMPI_API[MPI_Sendrecv_NUM])
#define MPI_Ssend \
(*(MPI_Ssend_RET (*)MPI_Ssend_PROTO) \
PyMPI_API[MPI_Ssend_NUM])
#define MPI_Test \
(*(MPI_Test_RET (*)MPI_Test_PROTO) \
PyMPI_API[MPI_Test_NUM])
#define MPI_Testall \
(*(MPI_Testall_RET (*)MPI_Testall_PROTO) \
PyMPI_API[MPI_Testall_NUM])
#define MPI_Testany \
(*(MPI_Testany_RET (*)MPI_Testany_PROTO) \
PyMPI_API[MPI_Testany_NUM])
#define MPI_Wait \
(*(MPI_Wait_RET (*)MPI_Wait_PROTO) \
PyMPI_API[MPI_Wait_NUM])
#define MPI_Waitall \
(*(MPI_Waitall_RET (*)MPI_Waitall_PROTO) \
PyMPI_API[MPI_Waitall_NUM])
#define MPI_Waitany \
(*(MPI_Waitany_RET (*)MPI_Waitany_PROTO) \
PyMPI_API[MPI_Waitany_NUM])
#define MPI_Wtick \
(*(MPI_Wtick_RET (*)MPI_Wtick_PROTO) \
PyMPI_API[MPI_Wtick_NUM])
#define MPI_Wtime \
(*(MPI_Wtime_RET (*)MPI_Wtime_PROTO) \
PyMPI_API[MPI_Wtime_NUM])
#define import_mpi() \
{ \
PyObject *module = PyImport_ImportModule("Scientific.MPI"); \
if (module != NULL) { \
PyObject *module_dict = PyModule_GetDict(module); \
PyObject *c_api_object = PyDict_GetItemString(module_dict, "_C_API"); \
if (PyCObject_Check(c_api_object)) { \
PyMPI_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
} \
} \
}
#endif