int *disps;
void *tmp_recvbuf;
int mpi_errno = MPI_SUCCESS;
- int type_size, total_count, nbytes, dst, src;
+ int total_count, dst, src;
int is_commutative;
comm_size = smpi_comm_size(comm);
rank = smpi_comm_rank(comm);
return MPI_ERR_COUNT;
}
- type_size= smpi_datatype_size(datatype);
- nbytes = total_count * type_size;
-
-
if (sendbuf != MPI_IN_PLACE) {
/* copy local data into recvbuf */
smpi_datatype_copy(((char *)sendbuf+disps[rank]*extent),
incoming_data + recv_offset*true_extent,
outgoing_data + recv_offset*true_extent,
&size, &datatype );
- buf0_was_inout = buf0_was_inout;
+ /* buf0_was_inout = buf0_was_inout; */
}
else {
/* lower ranked value so need to call op(my_data, received_data) */
int *disps;
void *tmp_recvbuf, *tmp_results;
int mpi_errno = MPI_SUCCESS;
- int type_size, dis[2], blklens[2], total_count, nbytes, dst;
+ int dis[2], blklens[2], total_count, dst;
int mask, dst_tree_root, my_tree_root, j, k;
int received;
MPI_Datatype sendtype, recvtype;
total_count += recvcounts[i];
}
- type_size= smpi_datatype_size(datatype);
- nbytes = total_count * type_size;
-
-
/* noncommutative and (non-pof2 or block irregular), use recursive doubling. */
/* need to allocate temporary buffer to receive incoming data*/
recvcounts[rank], datatype, recvbuf,
recvcounts[rank], datatype);
if (mpi_errno) return(mpi_errno);
-
+ xbt_free(disps);
+ xbt_free(tmp_recvbuf);
+ xbt_free(tmp_results);
return MPI_SUCCESS;
}