int A1D_Destroy_window(A1D_Window_t* window) { int mpi_status; int mpi_rank; /* barrier so that no one is able to access remote window memory after it is free */ mpi_status = MPI_Barrier(window->comm); assert(mpi_status==0); /* my rank in this communicator */ mpi_status = MPI_Comm_rank(window->comm,&mpi_rank); assert(mpi_status==0); /* free the local memory */ A1D_Free_local(window->addr_list[mpi_rank]); /* free the list of base pointers */ free(window->addr_list); #ifndef NO_WINDOW_BOUNDS_CHECKING /* free list of sizes */ free(window->size_list); #endif /* free the communicator */ mpi_status = MPI_Comm_free(&(window->comm)); assert(mpi_status==0); return(0); }
void A1D_Free_shared(void* ptr) { /* barrier so that no one tries to access memory which is no longer allocated */ mpi_status = MPI_Barrier(A1D_COMM_WORLD); assert(mpi_status==0); A1D_Free_local(ptr); return; }
int PARMCI_Free_local(void * ptr) { A1D_Free_local(ptr); return(0); }