aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <schnetter@2e825fa2-fb71-486d-8b7f-a5ff3f0f6cb8>2004-04-05 12:06:48 +0000
committerschnetter <schnetter@2e825fa2-fb71-486d-8b7f-a5ff3f0f6cb8>2004-04-05 12:06:48 +0000
commit06fdcff8388130128cd77425be4fe055b9fa8549 (patch)
tree8525110fce0861e24df38c7b0ad5e930c95a3b3d
parent620f897c58000d57722ae9b2ecea4ec978aa7904 (diff)
Correct the MPI replacement routines. Compiles, but untested.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/Slab/trunk@28 2e825fa2-fb71-486d-8b7f-a5ff3f0f6cb8
-rw-r--r--src/slab.c59
1 files changed, 41 insertions, 18 deletions
diff --git a/src/slab.c b/src/slab.c
index 17d0b74..b461b82 100644
--- a/src/slab.c
+++ b/src/slab.c
@@ -172,19 +172,25 @@ static MPI_Datatype MPI_COMPLEX32;
#ifndef CCTK_MPI
typedef int MPI_Comm;
-typedef int MPI_Datatype;
-
-#define MPI_BYTE CCTK_VARIABLE_BYTE
-#define MPI_INT1 CCTK_VARIABLE_INT1
-#define MPI_INT2 CCTK_VARIABLE_INT2
-#define MPI_INT4 CCTK_VARIABLE_INT4
-#define MPI_INT8 CCTK_VARIABLE_INT8
-#define MPI_REAL4 CCTK_VARIABLE_REAL4
-#define MPI_REAL8 CCTK_VARIABLE_REAL8
-#define MPI_REAL16 CCTK_VARIABLE_REAL16
-#define MPI_COMPLEX8 CCTK_VARIABLE_COMPLEX8
-#define MPI_COMPLEX16 CCTK_VARIABLE_COMPLEX16
-#define MPI_COMPLEX32 CCTK_VARIABLE_COMPLEX32
+
+typedef enum {
+ MPI_BYTE = CCTK_VARIABLE_BYTE,
+ MPI_INT = CCTK_VARIABLE_INT,
+ MPI_INT1 = CCTK_VARIABLE_INT1,
+ MPI_INT2 = CCTK_VARIABLE_INT2,
+ MPI_INT4 = CCTK_VARIABLE_INT4,
+ MPI_INT8 = CCTK_VARIABLE_INT8,
+ MPI_REAL = CCTK_VARIABLE_REAL,
+ MPI_REAL4 = CCTK_VARIABLE_REAL4,
+ MPI_REAL8 = CCTK_VARIABLE_REAL8,
+ MPI_REAL16 = CCTK_VARIABLE_REAL16,
+ MPI_COMPLEX = CCTK_VARIABLE_COMPLEX,
+ MPI_COMPLEX8 = CCTK_VARIABLE_COMPLEX8,
+ MPI_COMPLEX16 = CCTK_VARIABLE_COMPLEX16,
+ MPI_COMPLEX32 = CCTK_VARIABLE_COMPLEX32
+} MPI_Datatype;
+
+typedef enum { MPI_MIN, MPI_MAX } MPI_Op;
static int
MPI_Barrier (MPI_Comm comm)
@@ -193,14 +199,14 @@ MPI_Barrier (MPI_Comm comm)
}
static int
-MPI_Comm_Size (MPI_Comm comm, int * size)
+MPI_Comm_size (MPI_Comm comm, int * size)
{
*size = 1;
return 0;
}
static int
-MPI_Comm_Rank (MPI_Comm comm, int * rank)
+MPI_Comm_rank (MPI_Comm comm, int * rank)
{
*rank = 0;
return 0;
@@ -215,9 +221,10 @@ MPI_Allgather (void * sendbuf, int sendcnt, int sendtype,
assert (sendbuf);
assert (recvbuf);
assert (sendcnt == recvcnt);
+ assert (recvcnt >= 0);
assert (sendtype == recvtype);
recvsize = CCTK_VarTypeSize (recvtype);
- assert (size > 0);
+ assert (recvsize > 0);
memcpy (recvbuf, sendbuf, recvcnt * recvsize);
return 0;
}
@@ -231,9 +238,10 @@ MPI_Alltoall (void * sendbuf, int sendcnt, int sendtype,
assert (sendbuf);
assert (recvbuf);
assert (sendcnt == recvcnt);
+ assert (recvcnt >= 0);
assert (sendtype == recvtype);
recvsize = CCTK_VarTypeSize (recvtype);
- assert (size > 0);
+ assert (recvsize > 0);
memcpy (recvbuf, sendbuf, recvcnt * recvsize);
return 0;
}
@@ -249,17 +257,32 @@ MPI_Alltoallv (void * sendbuf, int * sendcnt, int * sendoff, int sendtype,
assert (sendcnt);
assert (recvcnt);
assert (*sendcnt == *recvcnt);
+ assert (*recvcnt >= 0);
assert (sendoff);
assert (recvoff);
assert (*sendoff == 0);
assert (*recvoff == 0);
assert (sendtype == recvtype);
recvsize = CCTK_VarTypeSize (recvtype);
- assert (size > 0);
+ assert (recvsize > 0);
memcpy (recvbuf, sendbuf, *recvcnt * recvsize);
return 0;
}
+static int
+MPI_Allreduce (void * sendbuf, void * recvbuf, int count,
+ MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
+{
+ int recvsize;
+ assert (sendbuf);
+ assert (recvbuf);
+ assert (count >= 0);
+ recvsize = CCTK_VarTypeSize (datatype);
+ assert (recvsize > 0);
+ memcpy (recvbuf, sendbuf, count * recvsize);
+ return 0;
+}
+
#endif