if((*win)->info!=MPI_INFO_NULL){
MPI_Info_free(&(*win)->info);
}
+
+ mpi_coll_barrier_fun((*win)->comm);
+ int rank=smpi_comm_rank((*win)->comm);
+ if(rank == 0)
+ xbt_barrier_destroy((*win)->bar);
xbt_free(*win);
*win = MPI_WIN_NULL;
return MPI_SUCCESS;
}
MPI_Request* treqs = static_cast<MPI_Request*>(xbt_dynar_to_array(reqs));
+ win->requests=xbt_dynar_new(sizeof(MPI_Request), NULL);
smpi_mpi_waitall(size,treqs,MPI_STATUSES_IGNORE);
xbt_free(treqs);
- win->requests=xbt_dynar_new(sizeof(MPI_Request), NULL);
}
win->assert = assert;
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);
}
MPI_Request* treqs = static_cast<MPI_Request*>(xbt_dynar_to_array(reqqs));
+ win->requests=xbt_dynar_new(sizeof(MPI_Request), NULL);
smpi_mpi_waitall(size,treqs,MPI_STATUSES_IGNORE);
xbt_free(treqs);
- win->requests=xbt_dynar_new(sizeof(MPI_Request), NULL);
+ smpi_group_unuse(win->group);
win->opened--; //we're closed for business !
return MPI_SUCCESS;
}
}
MPI_Request* treqs = static_cast<MPI_Request*>(xbt_dynar_to_array(reqqs));
+ win->requests=xbt_dynar_new(sizeof(MPI_Request), NULL);
smpi_mpi_waitall(size,treqs,MPI_STATUSES_IGNORE);
xbt_free(treqs);
- win->requests=xbt_dynar_new(sizeof(MPI_Request), NULL);
+ smpi_group_unuse(win->group);
win->opened--; //we're opened for business !
return MPI_SUCCESS;
}