[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.
This commit is contained in:
Mohamad Chaarawi 2014-08-01 14:24:52 -05:00
parent beb6f83cfd
commit 8771fba1de
3 changed files with 37 additions and 26 deletions

View File

@ -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);

View File

@ -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);
pl = H5Pdecode(buf);
if(mpi_rank == recv_proc) {
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(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");

View File

@ -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);