22 #define NCOUNTER NTIMER
25 # define FORTRAN_NAME(low,up) up
28 # define FORTRAN_NAME(low,up) low##_
30 # define FORTRAN_NAME(low,up) low
34 #define nek_comm_settings FORTRAN_NAME(nek_comm_settings, NEK_COMM_SETTINGS)
35 #define nek_comm_getstat FORTRAN_NAME(nek_comm_getstat, NEK_COMM_GETSTAT)
36 #define nek_comm_startstat FORTRAN_NAME(nek_comm_startstat, NEK_COMM_STARTSTAT)
61 while (t1 == t0) t1 = MPI_Wtime();
79 COUNTER[1] = COUNTER[0];
80 for (i = 0; i <
NTIMER; i++) timer[i] = fmax(
TIMER[i],(
double)0.0);
81 for (i = 0; i <
NCOUNTER; i++) counter[i] = COUNTER[i];
88 for (i = 0; i <
NCOUNTER; i++) COUNTER[i] = 0;
94 #pragma weak MPI_ALLREDUCE = mpi_allreduce_f
95 #pragma weak mpi_allreduce = mpi_allreduce_f
96 #pragma weak mpi_allreduce_ = mpi_allreduce_f
97 #pragma weak mpi_allreduce__ = mpi_allreduce_f
98 void mpi_allreduce_f(
char *sendbuf,
char *recvbuf,
MPI_Fint *
count,
102 MPI_Comm c_comm = MPI_Comm_f2c(*comm);
103 MPI_Datatype c_type = MPI_Type_f2c(*datatype);
104 MPI_Op c_op = MPI_Op_f2c(*op);
109 if (
TIMING) t0 = MPI_Wtime();
110 if (
SYNC) *ierr = MPI_Barrier(c_comm);
111 if (
TIMING) t1 = MPI_Wtime();
112 *ierr = PMPI_Allreduce(sendbuf, recvbuf, *count, c_type, c_op, c_comm);
116 #pragma weak MPI_BARRIER = mpi_barrier_f
117 #pragma weak mpi_barrier = mpi_barrier_f
118 #pragma weak mpi_barrier_ = mpi_barrier_f
119 #pragma weak mpi_barrier__ = mpi_barrier_f
122 MPI_Comm c_comm = MPI_Comm_f2c(*comm);
127 if (
TIMING) t0 = MPI_Wtime();
128 *ierr = PMPI_Barrier(c_comm);
132 #pragma weak MPI_RECV = mpi_recv_f
133 #pragma weak mpi_recv = mpi_recv_f
134 #pragma weak mpi_recv_ = mpi_recv_f
135 #pragma weak mpi_recv__ = mpi_recv_f
140 MPI_Comm c_comm = MPI_Comm_f2c(*comm);
141 MPI_Datatype c_type = MPI_Type_f2c(*datatype);
142 MPI_Status *c_status = (MPI_Status *) status;
147 if (
TIMING) t0 = MPI_Wtime();
148 *ierr = PMPI_Recv(buf, *count, c_type, *source, *tag, c_comm, c_status);
152 #pragma weak MPI_SEND = mpi_send_f
153 #pragma weak mpi_send = mpi_send_f
154 #pragma weak mpi_send_ = mpi_send_f
155 #pragma weak mpi_send__ = mpi_send_f
159 MPI_Comm c_comm = MPI_Comm_f2c(*comm);
160 MPI_Datatype c_type = MPI_Type_f2c(*datatype);
165 if (
TIMING) t0 = MPI_Wtime();
166 *ierr = PMPI_Send(buf, *count, c_type, *dest, *tag, c_comm);
174 #pragma weak MPI_Allreduce = mpi_allreduce_c
175 #pragma weak MPI_Allreduce_ = mpi_allreduce_c
176 int mpi_allreduce_c(
void *sendbuf,
void *recvbuf,
int count,
177 MPI_Datatype datatype, MPI_Op op,
MPI_Comm comm)
184 if (
TIMING) t0 = MPI_Wtime();
185 if (
SYNC) ierr = MPI_Barrier(comm);
186 if (
TIMING) t1 = MPI_Wtime();
187 ierr = PMPI_Allreduce(sendbuf, recvbuf, count, datatype, op, comm);
192 #pragma weak MPI_Waitall = mpi_waitall_c
193 #pragma weak MPI_Waitall_ = mpi_waitall_c
194 int mpi_waitall_c(
int count, MPI_Request *request, MPI_Status *status)
202 if (
TIMING) t0 = MPI_Wtime();
203 ierr = PMPI_Waitall(count, request, status);
208 #pragma weak MPI_Barrier = mpi_barrier_c
209 #pragma weak MPI_Barrier_ = mpi_barrier_c
217 if (
TIMING) t0 = MPI_Wtime();
218 ierr = PMPI_Barrier(comm);
223 #pragma weak MPI_Irecv = mpi_irecv_c
224 #pragma weak MPI_Irecv_ = mpi_irecv_c
225 int mpi_irecv_c(
void *buf,
int count, MPI_Datatype type,
int source,
226 int tag,
MPI_Comm comm, MPI_Request *request)
233 if (
TIMING) t0 = MPI_Wtime();
234 ierr = PMPI_Irecv(buf,count,type,source,tag,comm,request);
240 #pragma weak MPI_Isend = mpi_isend_c
241 #pragma weak MPI_Isend_ = mpi_isend_c
242 int mpi_isend_c(
void *buf,
int count, MPI_Datatype type,
int dest,
243 int tag,
MPI_Comm comm, MPI_Request *request)
250 if (
TIMING) t0 = MPI_Wtime();
251 ierr = PMPI_Isend(buf,count,type,dest,tag,comm,request);
256 #pragma weak MPI_Recv = mpi_recv_c
257 #pragma weak MPI_Recv_ = mpi_recv_c
258 int mpi_recv_c(
void *buf,
int count, MPI_Datatype type,
int source,
259 int tag,
MPI_Comm comm, MPI_Status *status)
266 if (
TIMING) t0 = MPI_Wtime();
267 ierr = PMPI_Recv(buf,count,type,source,tag,comm,status);
272 #pragma weak MPI_Send = mpi_send_c
273 #pragma weak MPI_Send_ = mpi_send_c
274 int mpi_send_c(
void *buf,
int count, MPI_Datatype type,
int dest,
282 if (
TIMING) t0 = MPI_Wtime();
283 ierr = PMPI_Send(buf,count,type,dest,tag,comm);
295 for (i = 0; i <
NCOUNTER; i++) counter[i] = COUNTER[i];
#define nek_comm_settings
#define nek_comm_startstat