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;
|
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 */
|
/* Wait for operation completion */
|
||||||
if (rc == OSHMEM_SUCCESS) {
|
if (rc == OSHMEM_SUCCESS) {
|
||||||
@ -116,3 +120,4 @@ static int _algorithm_simple(struct oshmem_group_t *group,
|
|||||||
|
|
||||||
return rc;
|
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++) {
|
for (i = 0; (i < group->proc_count) && (rc == OSHMEM_SUCCESS); i++) {
|
||||||
pe_cur = oshmem_proc_pe(group->proc_array[i]);
|
pe_cur = oshmem_proc_pe(group->proc_array[i]);
|
||||||
if (pe_cur != PE_root) {
|
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) {
|
if (OSHMEM_SUCCESS != rc) {
|
||||||
return 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));
|
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) {
|
if (rc == OSHMEM_SUCCESS) {
|
||||||
SCOLL_VERBOSE(14, "[#%d] Wait for operation completion", group->my_pe);
|
SCOLL_VERBOSE(14, "[#%d] Wait for operation completion", group->my_pe);
|
||||||
|
/* wait until root finishes sending data */
|
||||||
rc = BARRIER_FUNC(group,
|
rc = BARRIER_FUNC(group,
|
||||||
(pSync + 1),
|
(pSync + 1),
|
||||||
SCOLL_DEFAULT_ALG);
|
SCOLL_DEFAULT_ALG);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user