coll/libnbc: use zero-size messages in ibarrier
and silence a valgrind warning Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
Этот коммит содержится в:
родитель
2eec6a08b5
Коммит
1a8a276914
@ -33,12 +33,6 @@ int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t *
|
||||
return res;
|
||||
}
|
||||
|
||||
handle->tmpbuf = malloc (2);
|
||||
if (OPAL_UNLIKELY(NULL == handle->tmpbuf)) {
|
||||
NBC_Return_handle (handle);
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
#ifdef NBC_CACHE_SCHEDULE
|
||||
/* there only one argument set per communicator -> hang it directly at
|
||||
* the tree-position, NBC_Dict_size[...] is 0 for not initialized and
|
||||
@ -64,14 +58,14 @@ int ompi_coll_libnbc_ibarrier(struct ompi_communicator_t *comm, ompi_request_t *
|
||||
recvpeer = ((rank - (1 << round)) + p) % p;
|
||||
|
||||
/* send msg to sendpeer */
|
||||
res = NBC_Sched_send ((void *) 0, true, 1, MPI_BYTE, sendpeer, schedule, false);
|
||||
res = NBC_Sched_send (NULL, false, 0, MPI_BYTE, sendpeer, schedule, false);
|
||||
if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) {
|
||||
NBC_Return_handle (handle);
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* recv msg from recvpeer */
|
||||
res = NBC_Sched_recv ((void *) 1, true, 1, MPI_BYTE, recvpeer, schedule, false);
|
||||
res = NBC_Sched_recv (NULL, false, 0, MPI_BYTE, recvpeer, schedule, false);
|
||||
if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) {
|
||||
NBC_Return_handle (handle);
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
@ -131,12 +125,6 @@ int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_reque
|
||||
return res;
|
||||
}
|
||||
|
||||
handle->tmpbuf = malloc (2);
|
||||
if (OPAL_UNLIKELY(NULL == handle->tmpbuf)) {
|
||||
NBC_Return_handle (handle);
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
schedule = OBJ_NEW(NBC_Schedule);
|
||||
if (OPAL_UNLIKELY(NULL == schedule)) {
|
||||
NBC_Return_handle (handle);
|
||||
@ -148,7 +136,7 @@ int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_reque
|
||||
|
||||
if (0 == rank) {
|
||||
for (int peer = 1 ; peer < rsize ; ++peer) {
|
||||
res = NBC_Sched_recv (0, true, 1, MPI_BYTE, peer, schedule, false);
|
||||
res = NBC_Sched_recv (NULL, false, 0, MPI_BYTE, peer, schedule, false);
|
||||
if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) {
|
||||
NBC_Return_handle (handle);
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
@ -157,13 +145,13 @@ int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_reque
|
||||
}
|
||||
|
||||
/* synchronize with the remote root */
|
||||
res = NBC_Sched_recv (0, true, 1, MPI_BYTE, 0, schedule, false);
|
||||
res = NBC_Sched_recv (NULL, false, 0, MPI_BYTE, 0, schedule, false);
|
||||
if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) {
|
||||
NBC_Return_handle (handle);
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
res = NBC_Sched_send (0, true, 1, MPI_BYTE, 0, schedule, false);
|
||||
res = NBC_Sched_send (NULL, false, 0, MPI_BYTE, 0, schedule, false);
|
||||
if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) {
|
||||
NBC_Return_handle (handle);
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
@ -179,7 +167,7 @@ int ompi_coll_libnbc_ibarrier_inter(struct ompi_communicator_t *comm, ompi_reque
|
||||
|
||||
/* inform remote peers that all local peers have entered the barrier */
|
||||
for (int peer = 1; peer < rsize ; ++peer) {
|
||||
res = NBC_Sched_send (0, true, 1, MPI_BYTE, peer, schedule, false);
|
||||
res = NBC_Sched_send (NULL, false, 0, MPI_BYTE, peer, schedule, false);
|
||||
if (OPAL_UNLIKELY(OMPI_SUCCESS != res)) {
|
||||
NBC_Return_handle (handle);
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user