1
/* begin_generated_IBM_copyright_prolog */
3
/* This is an automatically generated copyright prolog. */
4
/* After initializing, DO NOT MODIFY OR MOVE */
5
/* --------------------------------------------------------------- */
6
/* Licensed Materials - Property of IBM */
7
/* Blue Gene/Q 5765-PER 5765-PRP */
9
/* (C) Copyright IBM Corp. 2011, 2012 All Rights Reserved */
10
/* US Government Users Restricted Rights - */
11
/* Use, duplication, or disclosure restricted */
12
/* by GSA ADP Schedule Contract with IBM Corp. */
14
/* --------------------------------------------------------------- */
16
/* end_generated_IBM_copyright_prolog */
17
/* (C)Copyright IBM Corp. 2007, 2011 */
19
* \file src/coll/gather/mpido_igather.c
25
int MPIDO_Igather(const void *sendbuf,
27
MPI_Datatype sendtype,
30
MPI_Datatype recvtype,
33
MPID_Request **request)
35
/*if (unlikely((data_size == 0) || (user_selected_type == MPID_COLL_USE_MPICH)))*/
38
* If the mpich mpir non-blocking collectives are enabled, return without
39
* first constructing the MPID_Request. This signals to the
40
* MPIR_Igather_impl() function to invoke the mpich nbc implementation
43
if (MPIDI_Process.mpir_nbc != 0)
47
* MPIR_* nbc implementation is not enabled. Fake a non-blocking
48
* MPIR_Igather() with a blocking MPIR_Gather().
50
if(unlikely(MPIDI_Process.verbose >= MPIDI_VERBOSE_DETAILS_ALL && comm_ptr->rank == 0))
51
fprintf(stderr,"Using MPICH blocking gather algorithm\n");
54
int rc = MPIR_Gather_impl(sendbuf, sendcount, sendtype,
55
recvbuf, recvcount, recvtype,
56
root, comm_ptr, &mpierrno);
59
* The blocking gather has completed - create and complete a
60
* MPID_Request object so the MPIR_Igather_impl() function does not
61
* perform an additional igather.
63
MPID_Request * mpid_request = MPID_Request_create_inline();
64
mpid_request->kind = MPID_COLL_REQUEST;
65
*request = mpid_request;
66
MPIDI_Request_complete_norelease_inline(mpid_request);