Merge pull request #2452 from alex-mikheev/topic/scoll_basic_fixes
oshmem: fixes scoll basic barrier and broadcast
Этот коммит содержится в:
Коммит
f339632216
@ -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);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user