diff --git a/src/adp/adp.c b/src/adp/adp.c index 962aaba50bb8150f0727f647748463fc849f66ab..b6b7e388fa6bebc3c906a242a914997cf51cfc61 100644 --- a/src/adp/adp.c +++ b/src/adp/adp.c @@ -737,12 +737,12 @@ clusters_t Heuristic1(global_context_t *ctx) MPI_Win_create(to_remove_mask, n * sizeof(heap_node), 1, MPI_INFO_NULL, ctx -> mpi_communicator, &win_to_remove_mask); MPI_Win_fence(0, win_to_remove_mask); - //MPI_Win win_locks; - //MPI_Win_create(lock_array, n * sizeof(lock_t), sizeof(lock_t), MPI_INFO_NULL, ctx -> mpi_communicator, &win_locks); - //MPI_Win_fence(0, win_locks); + MPI_Win win_locks; + MPI_Win_create(lock_array, n * sizeof(lock_t), sizeof(lock_t), MPI_INFO_NULL, ctx -> mpi_communicator, &win_locks); + MPI_Win_fence(0, win_locks); - //MPI_Win_lock_all(MPI_LOCK_SHARED, win_to_remove_mask); - //MPI_Win_lock_all(MPI_LOCK_SHARED, win_locks); + MPI_Win_lock_all(0, win_to_remove_mask); + MPI_Win_lock_all(0, win_locks); @@ -768,7 +768,6 @@ clusters_t Heuristic1(global_context_t *ctx) * use an array of locks, and compare and swap to actually gain control of the thing * * */ - /* #pragma omp critical { @@ -777,7 +776,7 @@ clusters_t Heuristic1(global_context_t *ctx) lock_t state = LOCK_FREE; - //state = h1_lock_acquire(ctx, win_locks, owner, jpos, state); + state = h1_lock_acquire(ctx, win_locks, owner, jpos, state); heap_node mask_element; MPI_Request request; @@ -797,10 +796,10 @@ clusters_t Heuristic1(global_context_t *ctx) } - //state = h1_lock_free(ctx, win_locks, owner, jpos, state); + state = h1_lock_free(ctx, win_locks, owner, jpos, state); } - */ + /* #pragma omp critical (h1_centers_elimination) { int owner = foreign_owner(ctx, jidx); @@ -826,12 +825,16 @@ clusters_t Heuristic1(global_context_t *ctx) MPI_Win_unlock(owner, win_to_remove_mask); } + */ } } } + + MPI_Win_unlock_all(win_to_remove_mask); + MPI_Win_unlock_all(win_locks); MPI_Win_fence(0, win_to_remove_mask); - //MPI_Win_fence(0, win_locks); + MPI_Win_fence(0, win_locks); MPI_Barrier(ctx -> mpi_communicator); /* populate the usual arrays */ @@ -881,7 +884,7 @@ clusters_t Heuristic1(global_context_t *ctx) MPI_Win_free(&win_to_remove_mask); free(to_remove_mask); - //MPI_Win_free(&win_locks); + MPI_Win_free(&win_locks); free(lock_array); int n_centers = (int)actual_centers.count;