- fix fca support for MPI_IN_PLACE in allgather and allgatherv collectives
This commit was SVN r23841.
Этот коммит содержится в:
родитель
f525245498
Коммит
f9bebe53f9
@ -273,14 +273,6 @@ int mca_coll_fca_allgather(void *sbuf, int scount, struct ompi_datatype_t *sdtyp
|
|||||||
|
|
||||||
spec.sbuf = sbuf;
|
spec.sbuf = sbuf;
|
||||||
spec.rbuf = rbuf;
|
spec.rbuf = rbuf;
|
||||||
if (MPI_IN_PLACE == spec.sbuf) {
|
|
||||||
FCA_VERBOSE(10, "Using MPI_IN_PLACE for sbuf");
|
|
||||||
spec.sbuf = spec.rbuf;
|
|
||||||
} else if (MPI_IN_PLACE == spec.rbuf) {
|
|
||||||
FCA_VERBOSE(10, "Using MPI_IN_PLACE for rbuf");
|
|
||||||
spec.rbuf = spec.sbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
spec.size = mca_coll_fca_get_buf_size(sdtype, scount, scount);
|
spec.size = mca_coll_fca_get_buf_size(sdtype, scount, scount);
|
||||||
|
|
||||||
if (spec.size < 0 || spec.size > fca_module->fca_comm_caps.max_payload ||
|
if (spec.size < 0 || spec.size > fca_module->fca_comm_caps.max_payload ||
|
||||||
@ -295,6 +287,11 @@ int mca_coll_fca_allgather(void *sbuf, int scount, struct ompi_datatype_t *sdtyp
|
|||||||
goto orig_allgather;
|
goto orig_allgather;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MPI_IN_PLACE == spec.sbuf) {
|
||||||
|
FCA_VERBOSE(10, "Using MPI_IN_PLACE for sbuf");
|
||||||
|
spec.sbuf = spec.rbuf + spec.size * fca_module->rank;
|
||||||
|
}
|
||||||
|
|
||||||
FCA_VERBOSE(5,"Using FCA Allgather");
|
FCA_VERBOSE(5,"Using FCA Allgather");
|
||||||
ret = mca_coll_fca_component.fca_ops.do_allgather(fca_module->fca_comm, &spec);
|
ret = mca_coll_fca_component.fca_ops.do_allgather(fca_module->fca_comm, &spec);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@ -345,6 +342,11 @@ int mca_coll_fca_allgatherv(void *sbuf, int scount,
|
|||||||
spec.displs[i] = disps[i] * relemsize;
|
spec.displs[i] = disps[i] * relemsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MPI_IN_PLACE == spec.sbuf) {
|
||||||
|
FCA_VERBOSE(10, "Using MPI_IN_PLACE for sbuf");
|
||||||
|
spec.sbuf = spec.rbuf + spec.displs[fca_module->rank];
|
||||||
|
}
|
||||||
|
|
||||||
FCA_VERBOSE(5,"Using FCA Allgatherv");
|
FCA_VERBOSE(5,"Using FCA Allgatherv");
|
||||||
ret = mca_coll_fca_component.fca_ops.do_allgatherv(fca_module->fca_comm, &spec);
|
ret = mca_coll_fca_component.fca_ops.do_allgatherv(fca_module->fca_comm, &spec);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user