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.
|
* expected by the collective call.
|
||||||
*/
|
*/
|
||||||
#define COLL_TUNED_COMPUTED_SEGCOUNT(SEGSIZE, TYPELNG, SEGCOUNT) \
|
#define COLL_TUNED_COMPUTED_SEGCOUNT(SEGSIZE, TYPELNG, SEGCOUNT) \
|
||||||
if( (SEGSIZE) >= (TYPELNG) ) { \
|
if( ((SEGSIZE) >= (TYPELNG)) && \
|
||||||
|
((SEGSIZE) < ((TYPELNG) * (SEGCOUNT))) ) { \
|
||||||
size_t residual; \
|
size_t residual; \
|
||||||
(SEGCOUNT) = (int)((SEGSIZE) / (TYPELNG)); \
|
(SEGCOUNT) = (int)((SEGSIZE) / (TYPELNG)); \
|
||||||
residual = (SEGSIZE) - (SEGCOUNT) * (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 */
|
for( i = 0; i < tree->tree_nextsize; i++ ) { /* send data to children */
|
||||||
/* send data */
|
/* send data */
|
||||||
#if defined(COLL_TUNED_BCAST_USE_BLOCKING)
|
#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,
|
tree->tree_next[i], MCA_COLL_BASE_TAG_BCAST,
|
||||||
MCA_PML_BASE_SEND_STANDARD, comm));
|
MCA_PML_BASE_SEND_STANDARD, comm));
|
||||||
#else
|
#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,
|
tree->tree_next[i], MCA_COLL_BASE_TAG_BCAST,
|
||||||
MCA_PML_BASE_SEND_STANDARD, comm, &send_reqs[i]));
|
MCA_PML_BASE_SEND_STANDARD, comm, &send_reqs[i]));
|
||||||
#endif /* COLL_TUNED_BCAST_USE_BLOCKING */
|
#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;
|
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]));
|
MCA_COLL_BASE_TAG_REDUCE, comm, &reqs[inbi]));
|
||||||
if (ret != MPI_SUCCESS) { line = __LINE__; goto error_hndl; }
|
if (ret != MPI_SUCCESS) { line = __LINE__; goto error_hndl; }
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user