11/*
22 * Copyright (c) 2017-2018 Mellanox Technologies Ltd. All rights reserved.
33 * Copyright (c) 2017 Intel, Inc. All rights reserved.
4+ * Copyright (c) 2021-2022 Cisco Systems, Inc. All rights reserved
45 * $COPYRIGHT$
56 *
67 * Additional copyrights may follow
1213#define OMPI_UTIL_TIMING_H
1314
1415#include "opal/util/timings.h"
15- /* TODO: we need access to MPI_* functions */
1616
1717#if (OPAL_ENABLE_TIMING )
1818
@@ -166,16 +166,17 @@ typedef struct ompi_timing_t {
166166#define OMPI_TIMING_OUT \
167167 do { \
168168 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; \
173173 int imported = 0; \
174174 \
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); \
177178 \
178- if (error ) { \
179+ if (timing_error ) { \
179180 if (0 == rank) { \
180181 printf("==OMPI_TIMING== error: something went wrong, timings doesn't work\n"); \
181182 } \
@@ -196,12 +197,15 @@ typedef struct ompi_timing_t {
196197 do { \
197198 int use; \
198199 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); \
205209 desc[i] = timing->val[use].desc; \
206210 prefix[i] = timing->val[use].prefix; \
207211 file[i] = timing->val[use].file; \
0 commit comments