1
1
In order to optimize for MPI_IN_PLACE, data is sent from the receive buffer.
consequently, it should be sent with the receive type and count.

Thanks Josh Hursey for the report and test case

Refs open-mpi/ompi#2256
Этот коммит содержится в:
Gilles Gouaillardet 2016-10-21 10:20:43 +09:00
родитель 2d94845f90
Коммит 45336d0bea
2 изменённых файлов: 5 добавлений и 4 удалений

Просмотреть файл

@ -5,7 +5,7 @@
* Corporation. All rights reserved. * Corporation. All rights reserved.
* Copyright (c) 2006 The Technical University of Chemnitz. All * Copyright (c) 2006 The Technical University of Chemnitz. All
* rights reserved. * rights reserved.
* Copyright (c) 2014-2015 Research Organization for Information Science * Copyright (c) 2014-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved. * and Technology (RIST). All rights reserved.
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights * Copyright (c) 2015 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
@ -104,7 +104,7 @@ int ompi_coll_libnbc_iallgather(const void* sendbuf, int sendcount, MPI_Datatype
} }
/* send to rank r - not from the sendbuf to optimize MPI_IN_PLACE */ /* send to rank r - not from the sendbuf to optimize MPI_IN_PLACE */
res = NBC_Sched_send (sbuf, false, sendcount, sendtype, r, schedule, false); res = NBC_Sched_send (sbuf, false, recvcount, recvtype, r, schedule, false);
if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) { if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) {
OBJ_RELEASE(schedule); OBJ_RELEASE(schedule);
return res; return res;

Просмотреть файл

@ -11,7 +11,7 @@
* Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013-2015 Los Alamos National Security, LLC. All rights * Copyright (c) 2013-2015 Los Alamos National Security, LLC. All rights
* reserved. * reserved.
* Copyright (c) 2014-2015 Research Organization for Information Science * Copyright (c) 2014-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved. * and Technology (RIST). All rights reserved.
* *
*/ */
@ -82,7 +82,8 @@ int ompi_coll_libnbc_iallgatherv(const void* sendbuf, int sendcount, MPI_Datatyp
return res; return res;
} }
res = NBC_Sched_send (sbuf, false, sendcount, sendtype, speer, schedule, false); /* send to rank r - not from the sendbuf to optimize MPI_IN_PLACE */
res = NBC_Sched_send (sbuf, false, recvcounts[rank], recvtype, speer, schedule, false);
if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) { if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) {
OBJ_RELEASE(schedule); OBJ_RELEASE(schedule);
return res; return res;