Correctly compute the number of elements in a segment.
For broadcast send the correct size for all intermediary nodes. This commit was SVN r12552.
Этот коммит содержится в:
родитель
7102147b9f
Коммит
c2c6a1b37e
@ -405,7 +405,8 @@ do {
|
||||
* expected by the collective call.
|
||||
*/
|
||||
#define COLL_TUNED_COMPUTED_SEGCOUNT(SEGSIZE, TYPELNG, SEGCOUNT) \
|
||||
if( (SEGSIZE) >= (TYPELNG) ) { \
|
||||
if( ((SEGSIZE) >= (TYPELNG)) && \
|
||||
((SEGSIZE) < ((TYPELNG) * (SEGCOUNT))) ) { \
|
||||
size_t residual; \
|
||||
(SEGCOUNT) = (int)((SEGSIZE) / (TYPELNG)); \
|
||||
residual = (SEGSIZE) - (SEGCOUNT) * (TYPELNG); \
|
||||
|
@ -140,11 +140,11 @@ ompi_coll_tuned_bcast_intra_generic( void* buffer,
|
||||
for( i = 0; i < tree->tree_nextsize; i++ ) { /* send data to children */
|
||||
/* send data */
|
||||
#if defined(COLL_TUNED_BCAST_USE_BLOCKING)
|
||||
err = MCA_PML_CALL(send(tmpbuf, sendcount, datatype,
|
||||
err = MCA_PML_CALL(send(tmpbuf, count_by_segment, datatype,
|
||||
tree->tree_next[i], MCA_COLL_BASE_TAG_BCAST,
|
||||
MCA_PML_BASE_SEND_STANDARD, comm));
|
||||
#else
|
||||
err = MCA_PML_CALL(isend(tmpbuf, sendcount, datatype,
|
||||
err = MCA_PML_CALL(isend(tmpbuf, count_by_segment, datatype,
|
||||
tree->tree_next[i], MCA_COLL_BASE_TAG_BCAST,
|
||||
MCA_PML_BASE_SEND_STANDARD, comm, &send_reqs[i]));
|
||||
#endif /* COLL_TUNED_BCAST_USE_BLOCKING */
|
||||
|
@ -119,7 +119,7 @@ int ompi_coll_tuned_reduce_generic( void* sendbuf, void* recvbuf, int original_c
|
||||
local_recvbuf = accumbuf + segindex * realsegsize;
|
||||
}
|
||||
}
|
||||
ret = MCA_PML_CALL(irecv(local_recvbuf, recvcount,datatype, tree->tree_next[i],
|
||||
ret = MCA_PML_CALL(irecv(local_recvbuf, recvcount, datatype, tree->tree_next[i],
|
||||
MCA_COLL_BASE_TAG_REDUCE, comm, &reqs[inbi]));
|
||||
if (ret != MPI_SUCCESS) { line = __LINE__; goto error_hndl; }
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user