vide_public/external/libsdf/include/libsdf/swampi.h

144 lines
5.2 KiB
C

#ifndef _MpiDOTh
#define _MpiDOTh
#define MPI_Init SWAMPI_Init
#define MPI_Finalize SWAMPI_Finalize
#define MPI_Abort SWAMPI_Abort
#define MPI_Comm_rank SWAMPI_Comm_rank
#define MPI_Comm_size SWAMPI_Comm_size
#define MPI_Comm_free SWAMPI_Comm_free
#define MPI_Get_count SWAMPI_Get_count
#define MPI_Isend SWAMPI_Isend
#define MPI_Irecv SWAMPI_Irecv
#define MPI_Issend SWAMPI_Isend /* can Isend handle Issends? */
#define MPI_Test SWAMPI_Test
#define MPI_Wait SWAMPI_Wait
#define MPI_Waitall SWAMPI_Waitall
#define MPI_Send SWAMPI_Send
#define MPI_Recv SWAMPI_Recv
#define MPI_Sendrecv SWAMPI_Sendrecv
#define MPI_Bcast SWAMPI_Bcast
#define MPI_Reduce SWAMPI_Reduce
#define MPI_Allreduce SWAMPI_Allreduce
#define MPI_Barrier SWAMPI_Barrier
#define MPI_Alltoallv SWAMPI_Alltoallv
#define MPI_Alltoall SWAMPI_Alltoall
#define MPI_Comm_dup SWAMPI_Comm_dup
#define MPI_Comm_split SWAMPI_Comm_split
#define MPI_Type_contiguous SWAMPI_Type_contiguous
#define MPI_Type_commit SWAMPI_Type_commit
#define MPI_Wtime SWAMPI_Wtime
#define MPI_Wtick SWAMPI_Wtick
#ifdef __cplusplus
extern "C"{
#endif /* __cplusplus */
typedef struct {
int MPI_SOURCE;
int MPI_TAG;
int MPI_ERROR;
int count;
} MPI_Status;
/* MAXLOC and MINLOC structures */
typedef struct { float x; int i;} MPI_float_int;
typedef struct { double x; int i;} MPI_double_int;
typedef struct { long x; int i;} MPI_long_int;
typedef struct { int x; int i;} MPI_2int;
typedef struct { short x; int i;} MPI_short_int;
typedef struct { long double x; int i;} MPI_long_double_int;
/* Fortran types */
typedef struct { float real; float imag; } MPI_complex;
typedef struct { double real; double imag; } MPI_double_complex;
/* must match MPI_Datasize array in swampi.c */
typedef enum {
MPI_FLOAT, MPI_DOUBLE, MPI_LONG_DOUBLE,
MPI_BYTE, MPI_CHAR, MPI_SHORT, MPI_INT,
MPI_LONG, MPI_LONG_LONG,
MPI_UNSIGNED, MPI_UNSIGNED_INT, MPI_UNSIGNED_CHAR,
MPI_UNSIGNED_SHORT, MPI_UNSIGNED_LONG, MPI_UNSIGNED_LONG_LONG,
MPI_FLOAT_INT, MPI_DOUBLE_INT, MPI_LONG_INT,
MPI_2INT, MPI_SHORT_INT, MPI_LONG_DOUBLE_INT,
MPI_COMPLEX, MPI_DOUBLE_COMPLEX, /* for Fortran */
MPI_USER_DATA, _MPI_NUMDATATYPES
} MPI_Datatype;
typedef enum {
MPI_SUM, MPI_PROD, MPI_MAX, MPI_MIN, MPI_BAND, MPI_BOR,
MPI_BXOR, MPI_LAND, MPI_LOR, MPI_LXOR, MPI_MAXLOC, MPI_MINLOC,
_MPI_NUMOPS
} MPI_Op;
typedef void (*MPI_user_comb_func)(void *from1, void *from2, void *to);
typedef int MPI_Comm;
typedef void * MPI_Request;
enum MPI_comm { MPI_COMM_WORLD, MPI_COMM_PRIVATE, MPI_COMM_NULL };
enum MPI_src { MPI_ANY_SOURCE = -1 };
enum MPI_tag { MPI_ANY_TAG = -1 };
enum MPI_ret { MPI_ERR_OTHER = -1, MPI_SUCCESS = 0 };
#define MPI_UNDEFINED (-32766)
#define MPI_REQUEST_NULL ((MPI_Request) 0)
int MPI_Init(int *argcp, char ***argvp);
int MPI_Finalize(void);
int MPI_Abort(MPI_Comm comm, int errorcode);
int MPI_Comm_rank(MPI_Comm comm, int *rank);
int MPI_Comm_size(MPI_Comm comm, int *size);
int MPI_Get_count(MPI_Status *status, MPI_Datatype type, int *cnt);
int MPI_Isend(void *buf, int cnt, MPI_Datatype type, int dest, int tag,
MPI_Comm comm, MPI_Request *req);
int MPI_Irecv(void *buf, int cnt, MPI_Datatype type, int src, int tag,
MPI_Comm comm, MPI_Request *req);
int MPI_Test(MPI_Request *cptr, int *flag, MPI_Status *stat);
int MPI_Wait(MPI_Request *cptr, MPI_Status *status);
int MPI_Waitall(int count, MPI_Request *reqv, MPI_Status *statusv);
int MPI_Send(void *buf, int cnt, MPI_Datatype type, int dest, int tag,
MPI_Comm comm);
int MPI_Recv(void *buf, int cnt, MPI_Datatype type, int src, int tag,
MPI_Comm comm, MPI_Status *status);
int MPI_Sendrecv(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);
int MPI_Bcast(void *buf, int cnt, MPI_Datatype type, int src, 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_Allreduce(void *sendbuf, void *recvbuf, int count,
MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
int MPI_Barrier(MPI_Comm comm);
int MPI_Alltoallv(void *sbuf, int *sendcnts, int *sdispls, MPI_Datatype stype,
void *rbuf, int *recvcnts, int *rdispls, MPI_Datatype rtype,
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_Comm_dup(MPI_Comm comm, 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_Type_contiguous(int len, MPI_Datatype type, MPI_Datatype *ptr);
int MPI_Type_commit(MPI_Datatype *ptr);
double MPI_Wtime(void);
double MPI_Wtick(void);
/* These convert the enums to a text description */
char *mpi_op_name[_MPI_NUMOPS], *mpi_datatype_name[_MPI_NUMDATATYPES];
/* These are private for mpi_reduce.c and mpi_bcast.c */
extern int _MPI_Procnum, _MPI_Nproc;
extern unsigned int *_MPI_Datasize;
/* These are for mpirun.c */
void _MPI_init_host1(int *portp, char **namep, int nproc);
void _MPI_init_host(int nproc);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _MpiDOTh */