#include "colls_private.h"
#include "coll_tuned_topo.h"
-#define MCA_COLL_BASE_TAG_REDUCE_SCATTER 222
/*
* Recursive-halving function is (*mostly*) copied from the BASIC coll module.
* I have removed the part which handles "large" message sizes
if (rank < 2 * remain) {
if ((rank & 1) == 0) {
smpi_mpi_send(result_buf, count, dtype, rank + 1,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER,
+ COLL_TAG_REDUCE_SCATTER,
comm);
/* we don't participate from here on out */
tmp_rank = -1;
} else {
smpi_mpi_recv(recv_buf, count, dtype, rank - 1,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER,
+ COLL_TAG_REDUCE_SCATTER,
comm, MPI_STATUS_IGNORE);
/* integrate their results into our temp results */
if (send_count > 0 && recv_count != 0) {
request=smpi_mpi_irecv(recv_buf + (ptrdiff_t)tmp_disps[recv_index] * extent,
recv_count, dtype, peer,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER,
+ COLL_TAG_REDUCE_SCATTER,
comm);
if (MPI_SUCCESS != err) {
xbt_free(tmp_rcounts);
if (recv_count > 0 && send_count != 0) {
smpi_mpi_send(result_buf + (ptrdiff_t)tmp_disps[send_index] * extent,
send_count, dtype, peer,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER,
+ COLL_TAG_REDUCE_SCATTER,
comm);
if (MPI_SUCCESS != err) {
xbt_free(tmp_rcounts);
if ((rank & 1) == 0) {
if (rcounts[rank]) {
smpi_mpi_recv(rbuf, rcounts[rank], dtype, rank + 1,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER,
+ COLL_TAG_REDUCE_SCATTER,
comm, MPI_STATUS_IGNORE);
}
} else {
if (rcounts[rank - 1]) {
smpi_mpi_send(result_buf + disps[rank - 1] * extent,
rcounts[rank - 1], dtype, rank - 1,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER,
+ COLL_TAG_REDUCE_SCATTER,
comm);
}
}
char *inbuf_free[2] = {NULL, NULL}, *inbuf[2] = {NULL, NULL};
ptrdiff_t true_lb, true_extent, lb, extent, max_real_segsize;
MPI_Request reqs[2] = {NULL, NULL};
- size_t typelng;
size = smpi_comm_size(comm);
rank = smpi_comm_rank(comm);
*/
smpi_datatype_extent(dtype, &lb, &extent);
smpi_datatype_extent(dtype, &true_lb, &true_extent);
- typelng = smpi_datatype_size(dtype);
max_real_segsize = true_extent + (ptrdiff_t)(max_block_count - 1) * extent;
inbi = 0;
/* Initialize first receive from the neighbor on the left */
reqs[inbi]=smpi_mpi_irecv(inbuf[inbi], max_block_count, dtype, recv_from,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER, comm
+ COLL_TAG_REDUCE_SCATTER, comm
);
tmpsend = accumbuf + (ptrdiff_t)displs[recv_from] * extent;
smpi_mpi_send(tmpsend, rcounts[recv_from], dtype, send_to,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER,
+ COLL_TAG_REDUCE_SCATTER,
comm);
for (k = 2; k < size; k++) {
/* Post irecv for the current block */
reqs[inbi]=smpi_mpi_irecv(inbuf[inbi], max_block_count, dtype, recv_from,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER, comm
+ COLL_TAG_REDUCE_SCATTER, comm
);
/* Wait on previous block to arrive */
/* send previous block to send_to */
smpi_mpi_send(tmprecv, rcounts[prevblock], dtype, send_to,
- MCA_COLL_BASE_TAG_REDUCE_SCATTER,
+ COLL_TAG_REDUCE_SCATTER,
comm);
}