From 8771fba1de67c170813b622812ea943d682104ec Mon Sep 17 00:00:00 2001 From: Mohamad Chaarawi Date: Fri, 1 Aug 2014 14:24:52 -0500 Subject: [svn-r25503] - fix bug in encode/decode plist parallel test when 1 proccess is used to run the test. - fix warning in t_chunk_alloc. --- testpar/t_chunk_alloc.c | 21 +++++++++++++-------- testpar/t_prop.c | 38 ++++++++++++++++++++++---------------- testpar/testphdf5.c | 2 +- 3 files changed, 36 insertions(+), 25 deletions(-) diff --git a/testpar/t_chunk_alloc.c b/testpar/t_chunk_alloc.c index b2ddc23..bc233c7 100644 --- a/testpar/t_chunk_alloc.c +++ b/testpar/t_chunk_alloc.c @@ -37,7 +37,7 @@ get_filesize(const char *filename) MPI_File fd; MPI_Offset filesize; - mpierr = MPI_File_open(MPI_COMM_SELF, (char*)filename, MPI_MODE_RDONLY, + mpierr = MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fd); VRFY((mpierr == MPI_SUCCESS), ""); @@ -275,8 +275,9 @@ parallel_access_dataset(const char *filename, int chunk_factor, access_type acti /* only opens the *dataset */ case open_only: - break; + default: + HDassert(0); } /* Close up */ @@ -319,7 +320,8 @@ parallel_access_dataset(const char *filename, int chunk_factor, access_type acti * interleaved pattern. */ static void -verify_data(const char *filename, int chunk_factor, write_type write_pattern, int close, hid_t *file_id, hid_t *dataset) +verify_data(const char *filename, int chunk_factor, write_type write_pattern, int vclose, + hid_t *file_id, hid_t *dataset) { /* HDF5 gubbins */ hid_t dataspace, memspace; /* HDF5 file identifier */ @@ -334,7 +336,7 @@ verify_data(const char *filename, int chunk_factor, write_type write_pattern, in /* Variables used in reading data back */ char buffer[CHUNK_SIZE]; int value, i; - int index; + int index_l; long nchunks; /* Initialize MPI */ MPI_Comm_size(MPI_COMM_WORLD,&mpi_size); @@ -397,11 +399,14 @@ verify_data(const char *filename, int chunk_factor, write_type write_pattern, in value = 100; else value = 0; + break; + default: + HDassert(0); } /* verify content of the chunk */ - for (index = 0; index < CHUNK_SIZE; index++) - VRFY((buffer[index] == value), "data verification"); + for (index_l = 0; index_l < CHUNK_SIZE; index_l++) + VRFY((buffer[index_l] == value), "data verification"); } hrc = H5Sclose (dataspace); @@ -415,7 +420,7 @@ verify_data(const char *filename, int chunk_factor, write_type write_pattern, in VRFY((hrc >= 0), ""); /* Close up */ - if (close){ + if (vclose){ hrc = H5Dclose(*dataset); VRFY((hrc >= 0), ""); *dataset = -1; @@ -464,7 +469,7 @@ test_chunk_alloc(void) MPI_Comm_size(MPI_COMM_WORLD,&mpi_size); MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank); - filename = GetTestParameters(); + filename = (const char*)GetTestParameters(); if (VERBOSE_MED) printf("Extend Chunked allocation test on file %s\n", filename); diff --git a/testpar/t_prop.c b/testpar/t_prop.c index c588ad2..2cc0f5e 100644 --- a/testpar/t_prop.c +++ b/testpar/t_prop.c @@ -27,50 +27,57 @@ 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 *buf = NULL; size_t buf_size = 0; - int casted_size; + void *sbuf = NULL; herr_t ret; /* Generic return value */ if(mpi_rank == 0) { + int send_size = 0; + /* first call to encode returns only the size of the buffer needed */ ret = H5Pencode(orig_pl, NULL, &buf_size); VRFY((ret >= 0), "H5Pencode succeeded"); - buf = (uint8_t *)HDmalloc(buf_size); + sbuf = (uint8_t *)HDmalloc(buf_size); - ret = H5Pencode(orig_pl, buf, &buf_size); + ret = H5Pencode(orig_pl, sbuf, &buf_size); VRFY((ret >= 0), "H5Pencode succeeded"); /* this is a temp fix to send this size_t */ - casted_size = (int)buf_size; + send_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]); + MPI_Isend(&send_size, 1, MPI_INT, recv_proc, 123, MPI_COMM_WORLD, &req[0]); + MPI_Isend(sbuf, send_size, MPI_BYTE, recv_proc, 124, MPI_COMM_WORLD, &req[1]); } /* end if */ + if(mpi_rank == recv_proc) { - 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); + int recv_size; + void *rbuf; + + MPI_Recv(&recv_size, 1, MPI_INT, 0, 123, MPI_COMM_WORLD, &status); + buf_size = recv_size; + rbuf = (uint8_t *)HDmalloc(buf_size); + MPI_Recv(rbuf, recv_size, MPI_BYTE, 0, 124, MPI_COMM_WORLD, &status); - pl = H5Pdecode(buf); + pl = H5Pdecode(rbuf); VRFY((pl >= 0), "H5Pdecode succeeded"); VRFY(H5Pequal(orig_pl, pl), "Property List Equal Succeeded"); ret = H5Pclose(pl); VRFY((ret >= 0), "H5Pclose succeeded"); + + if(NULL != rbuf) + HDfree(rbuf); } /* end if */ if(0 == mpi_rank) MPI_Waitall(2, req, MPI_STATUSES_IGNORE); - if(NULL != buf) - HDfree(buf); + if(NULL != sbuf) + HDfree(sbuf); MPI_Barrier(MPI_COMM_WORLD); - return(0); } @@ -135,7 +142,6 @@ test_plist_ed(void) herr_t ret; /* Generic return value */ - if(VERBOSE_MED) printf("Encode/Decode DCPLs\n"); diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c index 057ac88..df6257f 100644 --- a/testpar/testphdf5.c +++ b/testpar/testphdf5.c @@ -368,7 +368,7 @@ int main(int argc, char **argv) AddTest("selnone", none_selection_chunk, NULL, "chunked dataset with none-selection", PARATESTFILE); AddTest("calloc", test_chunk_alloc, NULL, - "parallel extend Chunked allocation on serial file", PARATESTFILE); + "parallel extend Chunked allocation on serial file", PARATESTFILE); AddTest("fltread", test_filter_read, NULL, "parallel read of dataset written serially with filters", PARATESTFILE); -- cgit v0.12