- 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.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);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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");
|
||||
ret = mca_coll_fca_component.fca_ops.do_allgather(fca_module->fca_comm, &spec);
|
||||
if (ret < 0) {
|
||||
@ -345,6 +342,11 @@ int mca_coll_fca_allgatherv(void *sbuf, int scount,
|
||||
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");
|
||||
ret = mca_coll_fca_component.fca_ops.do_allgatherv(fca_module->fca_comm, &spec);
|
||||
if (ret < 0) {
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user