1
1

Merge pull request #6942 from guserav/v4-fix-osc-sm-post-32-bit-atomics

v4.0.x: Fix osc sm posts when only 32 bit atomics support v4.0.x
Этот коммит содержится в:
Howard Pritchard 2019-09-03 09:20:38 -06:00 коммит произвёл GitHub
родитель 893ea3f91f 9bf1873215
Коммит 6912e09d7a
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 4 добавлений и 4 удалений

Просмотреть файл

@ -151,7 +151,7 @@ ompi_osc_sm_start(struct ompi_group_t *group,
for (int i = 0 ; i < size ; ++i) { for (int i = 0 ; i < size ; ++i) {
int rank_byte = ranks[i] >> OSC_SM_POST_BITS; 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 */ /* wait for rank to post */
while (!(module->posts[my_rank][rank_byte] & rank_bit)) { 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 *module =
(ompi_osc_sm_module_t*) win->w_osc_module; (ompi_osc_sm_module_t*) win->w_osc_module;
int my_rank = ompi_comm_rank (module->comm); int my_rank = ompi_comm_rank (module->comm);
int my_byte = my_rank >> 6; int my_byte = my_rank >> OSC_SM_POST_BITS;
uint64_t my_bit = ((uint64_t) 1) << (my_rank & 0x3f); osc_sm_post_type_t my_bit = ((osc_sm_post_type_t) 1) << (my_rank & OSC_SM_POST_MASK);
int gsize; int gsize;
OPAL_THREAD_LOCK(&module->lock); OPAL_THREAD_LOCK(&module->lock);

Просмотреть файл

@ -242,7 +242,7 @@ component_select(struct ompi_win_t *win, void **base, size_t size, int disp_unit
int i, flag; int i, flag;
size_t pagesize; size_t pagesize;
size_t state_size; 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, OPAL_OUTPUT_VERBOSE((1, ompi_osc_base_framework.framework_output,
"allocating shared memory region of size %ld\n", (long) size)); "allocating shared memory region of size %ld\n", (long) size));