1
1
/*
2
2
* Copyright (c) 2017-2018 Mellanox Technologies Ltd. All rights reserved.
3
3
* Copyright (c) 2017 Intel, Inc. All rights reserved.
4
+ * Copyright (c) 2021-2022 Cisco Systems, Inc. All rights reserved
4
5
* $COPYRIGHT$
5
6
*
6
7
* Additional copyrights may follow
12
13
#define OMPI_UTIL_TIMING_H
13
14
14
15
#include "opal/util/timings.h"
15
- /* TODO: we need access to MPI_* functions */
16
16
17
17
#if (OPAL_ENABLE_TIMING )
18
18
@@ -166,16 +166,17 @@ typedef struct ompi_timing_t {
166
166
#define OMPI_TIMING_OUT \
167
167
do { \
168
168
if (OMPI_TIMING.enabled) { \
169
- int i, size, rank; \
170
- MPI_Comm_size(MPI_COMM_WORLD, & size); \
171
- MPI_Comm_rank(MPI_COMM_WORLD, & rank); \
172
- int error = 0; \
169
+ int i; \
170
+ int size = ompi_comm_size(MPI_COMM_WORLD); \
171
+ int rank = ompi_comm_rank(MPI_COMM_WORLD); \
172
+ int timing_error = 0; \
173
173
int imported = 0; \
174
174
\
175
- MPI_Reduce(&OMPI_TIMING.error, &error, 1, \
176
- MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); \
175
+ MPI_COMM_WORLD->c_coll->coll_reduce(&OMPI_TIMING.error, &timing_error, 1, \
176
+ MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD, \
177
+ MPI_COMM_WORLD->c_coll->coll_reduce_module); \
177
178
\
178
- if (error ) { \
179
+ if (timing_error ) { \
179
180
if (0 == rank) { \
180
181
printf("==OMPI_TIMING== error: something went wrong, timings doesn't work\n"); \
181
182
} \
@@ -196,12 +197,15 @@ typedef struct ompi_timing_t {
196
197
do { \
197
198
int use; \
198
199
for (use = 0; use < timing->use; use++) { \
199
- MPI_Reduce(&timing->val[use].ts, avg + i, 1, \
200
- MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); \
201
- MPI_Reduce(&timing->val[use].ts, min + i, 1, \
202
- MPI_DOUBLE, MPI_MIN, 0, MPI_COMM_WORLD); \
203
- MPI_Reduce(&timing->val[use].ts, max + i, 1, \
204
- MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD); \
200
+ MPI_COMM_WORLD->c_coll->coll_reduce(&timing->val[use].ts, avg + i, 1, \
201
+ MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD, \
202
+ MPI_COMM_WORLD->c_coll->coll_reduce_module); \
203
+ MPI_COMM_WORLD->c_coll->coll_reduce(&timing->val[use].ts, min + i, 1, \
204
+ MPI_DOUBLE, MPI_MIN, 0, MPI_COMM_WORLD, \
205
+ MPI_COMM_WORLD->c_coll->coll_reduce_module); \
206
+ MPI_COMM_WORLD->c_coll->coll_reduce(&timing->val[use].ts, max + i, 1, \
207
+ MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD, \
208
+ MPI_COMM_WORLD->c_coll->coll_reduce_module); \
205
209
desc[i] = timing->val[use].desc; \
206
210
prefix[i] = timing->val[use].prefix; \
207
211
file[i] = timing->val[use].file; \
0 commit comments