From 9bf1873215d318d1cb1b581def966125ff9c1b54 Mon Sep 17 00:00:00 2001 From: guserav Date: Tue, 9 Jul 2019 13:39:15 -0700 Subject: [PATCH] Fix osc sm posts when only 32 bit atomics support Signed-off-by: guserav (cherry picked from commit 3c9f4e682369e6fd5860b46ba81d79f2d1599a35) --- ompi/mca/osc/sm/osc_sm_active_target.c | 6 +++--- ompi/mca/osc/sm/osc_sm_component.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ompi/mca/osc/sm/osc_sm_active_target.c b/ompi/mca/osc/sm/osc_sm_active_target.c index ab0f73f87c6..e34389be6c7 100644 --- a/ompi/mca/osc/sm/osc_sm_active_target.c +++ b/ompi/mca/osc/sm/osc_sm_active_target.c @@ -151,7 +151,7 @@ ompi_osc_sm_start(struct ompi_group_t *group, for (int i = 0 ; i < size ; ++i) { int rank_byte = ranks[i] >> OSC_SM_POST_BITS; - osc_sm_post_type_t rank_bit = ((osc_sm_post_type_t) 1) << (ranks[i] & 0x3f); + osc_sm_post_type_t rank_bit = ((osc_sm_post_type_t) 1) << (ranks[i] & OSC_SM_POST_MASK); /* wait for rank to post */ while (!(module->posts[my_rank][rank_byte] & rank_bit)) { @@ -221,8 +221,8 @@ ompi_osc_sm_post(struct ompi_group_t *group, ompi_osc_sm_module_t *module = (ompi_osc_sm_module_t*) win->w_osc_module; int my_rank = ompi_comm_rank (module->comm); - int my_byte = my_rank >> 6; - uint64_t my_bit = ((uint64_t) 1) << (my_rank & 0x3f); + int my_byte = my_rank >> OSC_SM_POST_BITS; + osc_sm_post_type_t my_bit = ((osc_sm_post_type_t) 1) << (my_rank & OSC_SM_POST_MASK); int gsize; OPAL_THREAD_LOCK(&module->lock); diff --git a/ompi/mca/osc/sm/osc_sm_component.c b/ompi/mca/osc/sm/osc_sm_component.c index de891e71a11..0475e65266b 100644 --- a/ompi/mca/osc/sm/osc_sm_component.c +++ b/ompi/mca/osc/sm/osc_sm_component.c @@ -242,7 +242,7 @@ component_select(struct ompi_win_t *win, void **base, size_t size, int disp_unit int i, flag; size_t pagesize; size_t state_size; - size_t posts_size, post_size = (comm_size + 63) / 64; + size_t posts_size, post_size = (comm_size + OSC_SM_POST_MASK) / (OSC_SM_POST_MASK + 1); OPAL_OUTPUT_VERBOSE((1, ompi_osc_base_framework.framework_output, "allocating shared memory region of size %ld\n", (long) size));