Exemple #1
0
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);
}
Exemple #2
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;
}
Exemple #3
0
int PARMCI_Free_local(void * ptr)
{
    A1D_Free_local(ptr);
    return(0);
}