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/alltoall/mpido_ialltoall.c
27
int MPIDO_Ialltoall(const void *sendbuf,
29
MPI_Datatype sendtype,
32
MPI_Datatype recvtype,
34
MPID_Request **request)
36
TRACE_ERR("Entering MPIDO_Ialltoall\n");
38
/*if (unlikely((data_size == 0) || (user_selected_type == MPID_COLL_USE_MPICH)))*/
41
* If the mpich mpir non-blocking collectives are enabled, return without
42
* first constructing the MPID_Request. This signals to the
43
* MPIR_Ialltoall_impl() function to invoke the mpich nbc implementation
46
if (MPIDI_Process.mpir_nbc != 0)
50
* MPIR_* nbc implementation is not enabled. Fake a non-blocking
51
* MPIR_Ialltoall() with a blocking MPIR_Alltoall().
53
if(unlikely(MPIDI_Process.verbose >= MPIDI_VERBOSE_DETAILS_ALL && comm_ptr->rank == 0))
54
fprintf(stderr,"Using MPICH blocking alltoall algorithm\n");
57
int rc = MPIR_Alltoall_impl(sendbuf, sendcount, sendtype,
58
recvbuf, recvcount, recvtype,
62
* The blocking allitoall has completed - create and complete a
63
* MPID_Request object so the MPIR_Ialltoall_impl() function does not
64
* perform an additional ialltoall.
66
MPID_Request * mpid_request = MPID_Request_create_inline();
67
mpid_request->kind = MPID_COLL_REQUEST;
68
*request = mpid_request;
69
MPIDI_Request_complete_norelease_inline(mpid_request);
74
TRACE_ERR("Leaving MPIDO_Ialltoall\n");