coll/libnbc: fix MPI_Ialltoallv with MPI_IN_PLACE and without MPI param check
Этот коммит содержится в:
родитель
98f62690f1
Коммит
6714f6aee7
@ -54,12 +54,6 @@ int ompi_coll_libnbc_ialltoallv(const void* sendbuf, const int *sendcounts, cons
|
|||||||
rank = ompi_comm_rank (comm);
|
rank = ompi_comm_rank (comm);
|
||||||
p = ompi_comm_size (comm);
|
p = ompi_comm_size (comm);
|
||||||
|
|
||||||
res = ompi_datatype_type_extent (sendtype, &sndext);
|
|
||||||
if (MPI_SUCCESS != res) {
|
|
||||||
NBC_Error("MPI Error in ompi_datatype_type_extent() (%i)", res);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = ompi_datatype_type_extent (recvtype, &rcvext);
|
res = ompi_datatype_type_extent (recvtype, &rcvext);
|
||||||
if (MPI_SUCCESS != res) {
|
if (MPI_SUCCESS != res) {
|
||||||
NBC_Error("MPI Error in ompi_datatype_type_extent() (%i)", res);
|
NBC_Error("MPI Error in ompi_datatype_type_extent() (%i)", res);
|
||||||
@ -87,7 +81,13 @@ int ompi_coll_libnbc_ialltoallv(const void* sendbuf, const int *sendcounts, cons
|
|||||||
}
|
}
|
||||||
sendcounts = recvcounts;
|
sendcounts = recvcounts;
|
||||||
sdispls = rdispls;
|
sdispls = rdispls;
|
||||||
} else if (sendcounts[rank] != 0) {
|
} else {
|
||||||
|
res = ompi_datatype_type_extent (sendtype, &sndext);
|
||||||
|
if (MPI_SUCCESS != res) {
|
||||||
|
NBC_Error("MPI Error in ompi_datatype_type_extent() (%i)", res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
if (sendcounts[rank] != 0) {
|
||||||
rbuf = (char *) recvbuf + rdispls[rank] * rcvext;
|
rbuf = (char *) recvbuf + rdispls[rank] * rcvext;
|
||||||
sbuf = (char *) sendbuf + sdispls[rank] * sndext;
|
sbuf = (char *) sendbuf + sdispls[rank] * sndext;
|
||||||
res = NBC_Copy (sbuf, sendcounts[rank], sendtype, rbuf, recvcounts[rank], recvtype, comm);
|
res = NBC_Copy (sbuf, sendcounts[rank], sendtype, rbuf, recvcounts[rank], recvtype, comm);
|
||||||
@ -95,6 +95,7 @@ int ompi_coll_libnbc_ialltoallv(const void* sendbuf, const int *sendcounts, cons
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
schedule = OBJ_NEW(NBC_Schedule);
|
schedule = OBJ_NEW(NBC_Schedule);
|
||||||
if (OPAL_UNLIKELY(NULL == schedule)) {
|
if (OPAL_UNLIKELY(NULL == schedule)) {
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user