MPI_Win recv_win = win->connected_wins[target_rank];
void* recv_addr = (void*) ( ((char*)recv_win->base) + target_disp * recv_win->disp_unit);
- smpi_datatype_use(origin_datatype);
- smpi_datatype_use(target_datatype);
XBT_DEBUG("Entering MPI_Put to %d", target_rank);
if(target_rank != smpi_comm_rank(win->comm)){
MPI_Win send_win = win->connected_wins[target_rank];
void* send_addr = (void*)( ((char*)send_win->base) + target_disp * send_win->disp_unit);
- smpi_datatype_use(origin_datatype);
- smpi_datatype_use(target_datatype);
XBT_DEBUG("Entering MPI_Get from %d", target_rank);
if(target_rank != smpi_comm_rank(win->comm)){
void* recv_addr = (void*)( ((char*)recv_win->base) + target_disp * recv_win->disp_unit);
XBT_DEBUG("Entering MPI_Accumulate to %d", target_rank);
- smpi_datatype_use(origin_datatype);
- smpi_datatype_use(target_datatype);
-
//prepare send_request
MPI_Request sreq = smpi_rma_send_init(origin_addr, origin_count, origin_datatype,
smpi_process_index(), smpi_group_index(smpi_comm_group(win->comm),target_rank), RMA_TAG+3, win->comm, op);
win->requests=xbt_dynar_new(sizeof(MPI_Request), NULL);
smpi_mpi_waitall(size,treqs,MPI_STATUSES_IGNORE);
xbt_free(treqs);
+ smpi_group_unuse(win->group);
win->opened--; //we're closed for business !
return MPI_SUCCESS;
}
win->requests=xbt_dynar_new(sizeof(MPI_Request), NULL);
smpi_mpi_waitall(size,treqs,MPI_STATUSES_IGNORE);
xbt_free(treqs);
+ smpi_group_unuse(win->group);
win->opened--; //we're opened for business !
return MPI_SUCCESS;
}