diff --git a/src/adp/adp.c b/src/adp/adp.c index b6b7e388fa6bebc3c906a242a914997cf51cfc61..35f61e2a3a87f8b9a524414147619c8894bfb350 100644 --- a/src/adp/adp.c +++ b/src/adp/adp.c @@ -768,38 +768,36 @@ 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 - { - int owner = foreign_owner(ctx, jidx); - idx_t jpos = jidx - ctx -> rank_idx_start[owner]; +#ifdef EXPERIMENTAL_H1 + int owner = foreign_owner(ctx, jidx); + idx_t jpos = jidx - ctx -> rank_idx_start[owner]; - lock_t state = LOCK_FREE; + 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; + heap_node mask_element; + MPI_Request request; - MPI_Rget(&mask_element, sizeof(heap_node), MPI_BYTE, - owner, jpos * sizeof(heap_node), sizeof(heap_node), MPI_BYTE, win_to_remove_mask, &request); - MPI_Wait(&request, MPI_STATUS_IGNORE); + MPI_Rget(&mask_element, sizeof(heap_node), MPI_BYTE, + owner, jpos * sizeof(heap_node), sizeof(heap_node), MPI_BYTE, win_to_remove_mask, &request); + MPI_Wait(&request, MPI_STATUS_IGNORE); - int flag = mask_element.array_idx == MY_SIZE_MAX; - if(flag || i_point.g > mask_element.value ) - { - heap_node tmp_mask_element = {.array_idx = i_point.array_idx, .value = i_point.g}; - MPI_Request request; - MPI_Rput(&tmp_mask_element, sizeof(heap_node), MPI_BYTE, owner, - jpos*sizeof(heap_node), sizeof(heap_node), MPI_BYTE, win_to_remove_mask, &request); - MPI_Wait(&request, MPI_STATUS_IGNORE); - - } + int flag = mask_element.array_idx == MY_SIZE_MAX; + if(flag || i_point.g > mask_element.value ) + { + heap_node tmp_mask_element = {.array_idx = i_point.array_idx, .value = i_point.g}; + MPI_Request request; + MPI_Rput(&tmp_mask_element, sizeof(heap_node), MPI_BYTE, owner, + jpos*sizeof(heap_node), sizeof(heap_node), MPI_BYTE, win_to_remove_mask, &request); + MPI_Wait(&request, MPI_STATUS_IGNORE); - state = h1_lock_free(ctx, win_locks, owner, jpos, state); } - /* + state = h1_lock_free(ctx, win_locks, owner, jpos, state); +#else + #pragma omp critical (h1_centers_elimination) { int owner = foreign_owner(ctx, jidx); @@ -824,8 +822,7 @@ clusters_t Heuristic1(global_context_t *ctx) } MPI_Win_unlock(owner, win_to_remove_mask); - } - */ +#endif } } }