1
1

Correctly forward the right module if we call another collective function. Kudos to

Edgar for figuring out this tricky bug.

This commit was SVN r20267.
Этот коммит содержится в:
George Bosilca 2009-01-14 03:22:54 +00:00
родитель d5112a92f6
Коммит 01adc999c5
4 изменённых файлов: 23 добавлений и 16 удалений

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

@ -2,13 +2,14 @@
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2006 The University of Tennessee and The University
* Copyright (c) 2004-2009 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2009 University of Houston. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -724,10 +725,10 @@ ompi_coll_tuned_allgather_intra_basic_linear(void *sbuf, int scount,
err = comm->c_coll.coll_gather(sbuf, scount, sdtype,
rbuf, rcount, rdtype,
0, comm, module);
0, comm, comm->c_coll.coll_gather_module);
if (MPI_SUCCESS == err) {
err = comm->c_coll.coll_bcast(rbuf, rcount * ompi_comm_size(comm), rdtype,
0, comm, module);
0, comm, comm->c_coll.coll_bcast_module);
}
/* All done */

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

@ -2,13 +2,14 @@
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2007 The University of Tennessee and The University
* Copyright (c) 2004-2009 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2009 University of Houston. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -627,7 +628,7 @@ ompi_coll_tuned_allgatherv_intra_basic_default(void *sbuf, int scount,
err = comm->c_coll.coll_gatherv(send_buf,
rcounts[rank], send_type,rbuf,
rcounts, disps, rdtype, 0,
comm, module);
comm, comm->c_coll.coll_gatherv_module);
if (MPI_SUCCESS != err) {
return err;
@ -655,7 +656,8 @@ ompi_coll_tuned_allgatherv_intra_basic_default(void *sbuf, int scount,
return err;
}
comm->c_coll.coll_bcast(rbuf, 1, newtype, 0, comm, module);
comm->c_coll.coll_bcast(rbuf, 1, newtype, 0, comm,
comm->c_coll.coll_bcast_module);
ompi_ddt_destroy (&newtype);

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

@ -2,13 +2,14 @@
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2006 The University of Tennessee and The University
* Copyright (c) 2004-2009 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2009 University of Houston. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -60,19 +61,21 @@ ompi_coll_tuned_allreduce_intra_nonoverlapping(void *sbuf, void *rbuf, int count
if (MPI_IN_PLACE == sbuf) {
if (0 == ompi_comm_rank(comm)) {
err = comm->c_coll.coll_reduce (MPI_IN_PLACE, rbuf, count, dtype,
op, 0, comm, module);
op, 0, comm, comm->c_coll.coll_reduce_module);
} else {
err = comm->c_coll.coll_reduce (rbuf, NULL, count, dtype, op, 0,
comm, module);
comm, comm->c_coll.coll_reduce_module);
}
} else {
err = comm->c_coll.coll_reduce (sbuf, rbuf, count, dtype, op, 0, comm, module);
err = comm->c_coll.coll_reduce (sbuf, rbuf, count, dtype, op, 0,
comm, comm->c_coll.coll_reduce_module);
}
if (MPI_SUCCESS != err) {
return err;
}
return comm->c_coll.coll_bcast (rbuf, count, dtype, 0, comm, module);
return comm->c_coll.coll_bcast (rbuf, count, dtype, 0, comm,
comm->c_coll.coll_bcast_module);
}
/*

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

@ -2,7 +2,7 @@
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2006 The University of Tennessee and The University
* Copyright (c) 2004-2009 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
@ -10,6 +10,7 @@
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
* Copyright (c) 2009 University of Houston. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -65,10 +66,10 @@ int ompi_coll_tuned_reduce_scatter_intra_nonoverlapping(void *sbuf, void *rbuf,
/* rbuf on root (0) is big enough to hold whole data */
if (root == rank) {
err = comm->c_coll.coll_reduce (MPI_IN_PLACE, tmprbuf, total_count,
dtype, op, root, comm, module);
dtype, op, root, comm, comm->c_coll.coll_reduce_module);
} else {
err = comm->c_coll.coll_reduce(tmprbuf, NULL, total_count,
dtype, op, root, comm, module);
dtype, op, root, comm, comm->c_coll.coll_reduce_module);
}
} else {
if (root == rank) {
@ -83,7 +84,7 @@ int ompi_coll_tuned_reduce_scatter_intra_nonoverlapping(void *sbuf, void *rbuf,
tmprbuf = tmprbuf_free - lb;
}
err = comm->c_coll.coll_reduce (sbuf, tmprbuf, total_count,
dtype, op, root, comm, module);
dtype, op, root, comm, comm->c_coll.coll_reduce_module);
}
if (MPI_SUCCESS != err) {
if (NULL != tmprbuf_free) free(tmprbuf_free);
@ -97,7 +98,7 @@ int ompi_coll_tuned_reduce_scatter_intra_nonoverlapping(void *sbuf, void *rbuf,
}
err = comm->c_coll.coll_scatterv (tmprbuf, rcounts, displs, dtype,
rbuf, rcounts[rank], dtype,
root, comm, module);
root, comm, comm->c_coll.coll_scatterv_module);
free(displs);
if (NULL != tmprbuf_free) free(tmprbuf_free);