unsigned int pof2 = 1, mask;
int send_idx, recv_idx, dst, send_cnt, recv_cnt;
- void *recv, *tmp_buf;
-
int rank = comm->rank();
unsigned int nprocs = comm->size();
send_size = (count + nprocs) / nprocs;
newcnt = send_size * nprocs;
- recv = (void *) smpi_get_tmp_recvbuffer(extent * newcnt);
- tmp_buf = (void *) smpi_get_tmp_sendbuffer(extent * newcnt);
+ unsigned char* recv = smpi_get_tmp_recvbuffer(extent * newcnt);
+ unsigned char* tmp_buf = smpi_get_tmp_sendbuffer(extent * newcnt);
memcpy(recv, sbuff, extent * count);
else
recv_idx = send_idx + (mask * share);
- Request::sendrecv((char *) recv + send_idx * extent, send_cnt, dtype, dst, tag,
- tmp_buf, recv_cnt, dtype, dst, tag, comm, &status);
+ Request::sendrecv(recv + send_idx * extent, send_cnt, dtype, dst, tag, tmp_buf, recv_cnt, dtype, dst, tag, comm,
+ &status);
- if(op!=MPI_OP_NULL) op->apply( tmp_buf, (char *) recv + recv_idx * extent, &recv_cnt,
- dtype);
+ if (op != MPI_OP_NULL)
+ op->apply(tmp_buf, recv + recv_idx * extent, &recv_cnt, dtype);
// update send_idx for next iteration
send_idx = recv_idx;
mask >>= 1;
}
- memcpy(tmp_buf, (char *) recv + recv_idx * extent, recv_cnt * extent);
+ memcpy(tmp_buf, recv + recv_idx * extent, recv_cnt * extent);
Colls::allgather(tmp_buf, recv_cnt, dtype, recv, recv_cnt, dtype, comm);
memcpy(rbuff, recv, count * extent);
}
else {
- tmp_buf = (void *) smpi_get_tmp_sendbuffer(extent * count);
+ unsigned char* tmp_buf = smpi_get_tmp_sendbuffer(extent * count);
memcpy(rbuff, sbuff, count * extent);
mask = pof2 / 2;
share = count / pof2;