1 /*
2 * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
3 * University Research and Technology
4 * Corporation. All rights reserved.
5 * Copyright (c) 2004-2017 The University of Tennessee and The University
6 * of Tennessee Research Foundation. All rights
7 * reserved.
8 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
9 * University of Stuttgart. All rights reserved.
10 * Copyright (c) 2004-2005 The Regents of the University of California.
11 * All rights reserved.
12 * $COPYRIGHT$
13 *
14 * Additional copyrights may follow
15 *
16 * $HEADER$
17 */
18
19 #include "ompi_config.h"
20
21 #include "coll_sync.h"
22
23
24 /*
25 * reduce
26 *
27 * Function: - reduce
28 * Accepts: - same as MPI_Reduce()
29 * Returns: - MPI_SUCCESS or error code
30 */
31 int mca_coll_sync_reduce(const void *sbuf, void *rbuf, int count,
32 struct ompi_datatype_t *dtype,
33 struct ompi_op_t *op,
34 int root, struct ompi_communicator_t *comm,
35 mca_coll_base_module_t *module)
36 {
37 mca_coll_sync_module_t *s = (mca_coll_sync_module_t*) module;
38
39 if (s->in_operation) {
40 return s->c_coll.coll_reduce(sbuf, rbuf, count, dtype, op, root, comm,
41 s->c_coll.coll_reduce_module);
42 }
43 COLL_SYNC(s, s->c_coll.coll_reduce(sbuf, rbuf, count, dtype,
44 op, root, comm,
45 s->c_coll.coll_reduce_module));
46 }