1
1
This commit was SVN r27423.
Этот коммит содержится в:
George Bosilca 2012-10-08 21:34:26 +00:00
родитель b46167fc4a
Коммит 9984a7143f

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

@ -38,7 +38,7 @@ ompi_coll_tuned_alltoallv_intra_pairwise(void *sbuf, int *scounts, int *sdisps,
struct ompi_communicator_t *comm, struct ompi_communicator_t *comm,
mca_coll_base_module_t *module) mca_coll_base_module_t *module)
{ {
int line = -1, err = 0, rank, size, step, sendto, recvfrom; int line = -1, err = 0, rank, size, step = 0, sendto, recvfrom;
void *psnd, *prcv; void *psnd, *prcv;
ptrdiff_t sext, rext; ptrdiff_t sext, rext;
@ -51,24 +51,8 @@ ompi_coll_tuned_alltoallv_intra_pairwise(void *sbuf, int *scounts, int *sdisps,
ompi_datatype_type_extent(sdtype, &sext); ompi_datatype_type_extent(sdtype, &sext);
ompi_datatype_type_extent(rdtype, &rext); ompi_datatype_type_extent(rdtype, &rext);
psnd = ((char *) sbuf) + (ptrdiff_t)sdisps[rank] * sext; /* Perform pairwise exchange starting from 1 since local exhange is done */
prcv = ((char *) rbuf) + (ptrdiff_t)rdisps[rank] * rext; for (step = 0; step < size; step++) {
if (0 != scounts[rank]) {
err = ompi_datatype_sndrcv(psnd, scounts[rank], sdtype,
prcv, rcounts[rank], rdtype);
if (MPI_SUCCESS != err) {
return err;
}
}
/* If only one process, we're done. */
if (1 == size) {
return MPI_SUCCESS;
}
/* Perform pairwise exchange starting from 1 since local exhange is done */
for (step = 1; step < size + 1; step++) {
/* Determine sender and receiver for this step. */ /* Determine sender and receiver for this step. */
sendto = (rank + step) % size; sendto = (rank + step) % size;
@ -84,15 +68,15 @@ ompi_coll_tuned_alltoallv_intra_pairwise(void *sbuf, int *scounts, int *sdisps,
prcv, rcounts[recvfrom], rdtype, recvfrom, prcv, rcounts[recvfrom], rdtype, recvfrom,
MCA_COLL_BASE_TAG_ALLTOALLV, MCA_COLL_BASE_TAG_ALLTOALLV,
comm, MPI_STATUS_IGNORE, rank); comm, MPI_STATUS_IGNORE, rank);
if (err != MPI_SUCCESS) { line = __LINE__; goto err_hndl; } if (MPI_SUCCESS != err) { line = __LINE__; goto err_hndl; }
} }
return MPI_SUCCESS; return MPI_SUCCESS;
err_hndl: err_hndl:
OPAL_OUTPUT((ompi_coll_tuned_stream, OPAL_OUTPUT((ompi_coll_tuned_stream,
"%s:%4d\tError occurred %d, rank %2d", __FILE__, line, "%s:%4d\tError occurred %d, rank %2d at step %d", __FILE__, line,
err, rank)); err, rank, step));
return err; return err;
} }