mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-19 16:50:46 +08:00
[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:
parent
beb6f83cfd
commit
8771fba1de
@ -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);
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user