diff options
Diffstat (limited to 'testpar/t_prop.c')
-rw-r--r-- | testpar/t_prop.c | 45 |
1 files changed, 20 insertions, 25 deletions
diff --git a/testpar/t_prop.c b/testpar/t_prop.c index e85b227..f98febb 100644 --- a/testpar/t_prop.c +++ b/testpar/t_prop.c @@ -26,58 +26,53 @@ test_encode_decode(hid_t orig_pl, int mpi_rank, int recv_proc) MPI_Request req[2]; MPI_Status status; hid_t pl; /* Decoded property list */ - void *send_buf = NULL; - size_t send_size = 0; + void *buf = NULL; + size_t buf_size = 0; + int casted_size; herr_t ret; /* Generic return value */ if(mpi_rank == 0) { - /* first call to encode returns only the size of the buffer needed */ - ret = H5Pencode(orig_pl, NULL, &send_size); + ret = H5Pencode(orig_pl, NULL, &buf_size); VRFY((ret >= 0), "H5Pencode succeeded"); - send_buf = (uint8_t *)HDmalloc(send_size); + buf = (uint8_t *)HDmalloc(buf_size); - ret = H5Pencode(orig_pl, send_buf, &send_size); + ret = H5Pencode(orig_pl, buf, &buf_size); VRFY((ret >= 0), "H5Pencode succeeded"); - MPI_Isend(&send_size, 1, MPI_INT, recv_proc, 123, MPI_COMM_WORLD, &req[0]); - MPI_Isend(send_buf, (int)send_size, MPI_BYTE, recv_proc, 124, MPI_COMM_WORLD, &req[1]); - } /* end if */ + /* this is a temp fix to send this size_t */ + casted_size = (int)buf_size; + MPI_Isend(&casted_size, 1, MPI_INT, recv_proc, 123, MPI_COMM_WORLD, &req[0]); + MPI_Isend(buf, casted_size, MPI_BYTE, recv_proc, 124, MPI_COMM_WORLD, &req[1]); + } /* end if */ if(mpi_rank == recv_proc) { - void *recv_buf = NULL; - size_t recv_size = 0; + MPI_Recv(&casted_size, 1, MPI_INT, 0, 123, MPI_COMM_WORLD, &status); + buf_size = casted_size; + buf = (uint8_t *)HDmalloc(buf_size); + MPI_Recv(buf, casted_size, MPI_BYTE, 0, 124, MPI_COMM_WORLD, &status); - MPI_Recv(&recv_size, 1, MPI_INT, 0, 123, MPI_COMM_WORLD, &status); - recv_buf = (uint8_t *)HDmalloc(recv_size); - MPI_Recv(recv_buf, (int)recv_size, MPI_BYTE, 0, 124, MPI_COMM_WORLD, &status); - - pl = H5Pdecode(recv_buf); + pl = H5Pdecode(buf); VRFY((pl >= 0), "H5Pdecode succeeded"); VRFY(H5Pequal(orig_pl, pl), "Property List Equal Succeeded"); ret = H5Pclose(pl); VRFY((ret >= 0), "H5Pclose succeeded"); - - if(NULL != recv_buf) - HDfree(recv_buf); } /* end if */ - if(mpi_rank == 0) { + if(0 == mpi_rank) MPI_Waitall(2, req, MPI_STATUSES_IGNORE); - if(NULL != send_buf) - HDfree(send_buf); - } + + if(NULL != buf) + HDfree(buf); MPI_Barrier(MPI_COMM_WORLD); return(0); } - - void test_plist_ed(void) { |