1
1

Merge pull request #2452 from alex-mikheev/topic/scoll_basic_fixes

oshmem: fixes scoll basic barrier and broadcast
Этот коммит содержится в:
Mike Dubman 2016-11-25 18:03:56 +02:00 коммит произвёл GitHub
родитель ebcfbbc045 0f83a1fd57
Коммит f339632216
3 изменённых файлов: 11 добавлений и 2 удалений

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

@ -105,6 +105,10 @@ static int _algorithm_simple(struct oshmem_group_t *group,
break;
}
}
/* fence (which currently acts as quiet) is needed
* because scoll level barrier does not guarantee put completion
*/
MCA_SPML_CALL(fence());
/* Wait for operation completion */
if (rc == OSHMEM_SUCCESS) {
@ -116,3 +120,4 @@ static int _algorithm_simple(struct oshmem_group_t *group,
return rc;
}

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

@ -528,7 +528,7 @@ static int _algorithm_basic(struct oshmem_group_t *group, long *pSync)
for (i = 0; (i < group->proc_count) && (rc == OSHMEM_SUCCESS); i++) {
pe_cur = oshmem_proc_pe(group->proc_array[i]);
if (pe_cur != PE_root) {
rc = MCA_SPML_CALL(recv(NULL, 0, SHMEM_ANY_SOURCE));
rc = MCA_SPML_CALL(recv(NULL, 0, pe_cur));
}
if (OSHMEM_SUCCESS != rc) {
return rc;

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

@ -146,11 +146,15 @@ static int _algorithm_central_counter(struct oshmem_group_t *group,
rc = MCA_SPML_CALL(put(target, nlong, (void *)source, pe_cur));
}
}
/* fence (which currently acts as quiet) is needed
* because scoll level barrier does not guarantee put completion
*/
MCA_SPML_CALL(fence());
}
/* Wait for operation completion to set needed size */
if (rc == OSHMEM_SUCCESS) {
SCOLL_VERBOSE(14, "[#%d] Wait for operation completion", group->my_pe);
/* wait until root finishes sending data */
rc = BARRIER_FUNC(group,
(pSync + 1),
SCOLL_DEFAULT_ALG);