mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-17 16:10:24 +08:00
[svn-r11339] Purpose:
Bug fix #281 Description: Committed a wrong copy in the previous checkin. Solution: Checked in the right one and did some code cleanup, rearrangment. Platforms tested: heping pp. Misc. update:
This commit is contained in:
parent
3eea9abb5f
commit
40a1e57caa
@ -21,9 +21,31 @@
|
||||
*/
|
||||
|
||||
#include "testphdf5.h"
|
||||
static int mpi_size, mpi_rank;
|
||||
|
||||
#define DATASETNAME "ExtendibleArray"
|
||||
#define ELEMS 20000000
|
||||
#define CHUNKSIZE 1000 /* #elements per chunk */
|
||||
#define DSETSIZE 20000*CHUNKSIZE
|
||||
|
||||
static MPI_Offset
|
||||
get_filesize(const char *filename)
|
||||
{
|
||||
int mpierr;
|
||||
MPI_File fd;
|
||||
MPI_Offset filesize;
|
||||
|
||||
mpierr = MPI_File_open(MPI_COMM_SELF, (char*)filename, MPI_MODE_RDONLY,
|
||||
MPI_INFO_NULL, &fd);
|
||||
VRFY((mpierr == MPI_SUCCESS), "");
|
||||
|
||||
mpierr = MPI_File_get_size(fd, &filesize);
|
||||
VRFY((mpierr == MPI_SUCCESS), "");
|
||||
|
||||
mpierr = MPI_File_close(&fd);
|
||||
VRFY((mpierr == MPI_SUCCESS), "");
|
||||
|
||||
return(filesize);
|
||||
}
|
||||
|
||||
/*
|
||||
* This creates a dataset serially with 20000 chunks, each of 1000
|
||||
@ -36,15 +58,14 @@ create_chunked_dataset(const char *filename)
|
||||
hid_t file; /* handles */
|
||||
hid_t dataspace, dataset;
|
||||
hid_t cparms;
|
||||
int mpi_size, mpi_rank;
|
||||
hsize_t dims[1] = {20*1000000}; /* dataset dimensions
|
||||
hsize_t dims[1] = {DSETSIZE}; /* dataset dimensions
|
||||
at creation time */
|
||||
|
||||
hsize_t maxdims[1] = {H5S_UNLIMITED};
|
||||
herr_t hrc;
|
||||
|
||||
/* Variables used in reading data back */
|
||||
hsize_t chunk_dims[1] ={1000};
|
||||
hsize_t chunk_dims[1] ={CHUNKSIZE};
|
||||
|
||||
/* set up MPI parameters */
|
||||
MPI_Comm_size(MPI_COMM_WORLD,&mpi_size);
|
||||
@ -87,57 +108,42 @@ void
|
||||
extend_chunked_dataset(const char *filename)
|
||||
{
|
||||
/* HDF5 gubbins */
|
||||
hid_t file_id, dataset; /* HDF5 file identifier */
|
||||
hid_t access_plist; /* HDF5 ID for file access property list */
|
||||
herr_t hrc; /* HDF5 return code */
|
||||
|
||||
hid_t file_id, dataset; /* HDF5 file identifier */
|
||||
hid_t access_plist; /* HDF5 ID for file access property list */
|
||||
herr_t hrc; /* HDF5 return code */
|
||||
hsize_t size[1];
|
||||
int mpi_size, mpi_rank;
|
||||
|
||||
long int lb;
|
||||
|
||||
/* MPI Gubbins */
|
||||
MPI_Comm comm;
|
||||
MPI_Info info;
|
||||
MPI_File thefile;
|
||||
MPI_Offset filesize;
|
||||
MPI_Offset filesize, /* actual file size */
|
||||
est_filesize; /* estimated file size */
|
||||
int mpierr;
|
||||
|
||||
int mpierr, ret;
|
||||
|
||||
|
||||
printf("extend_chunked_dataset: filename=%s\n", filename);
|
||||
/* Initialize MPI */
|
||||
comm = MPI_COMM_WORLD;
|
||||
info = MPI_INFO_NULL;
|
||||
|
||||
/* set up MPI parameters */
|
||||
MPI_Comm_size(MPI_COMM_WORLD,&mpi_size);
|
||||
MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank);
|
||||
|
||||
/* Set up HDF5 file creation, access and independent data transfer property lists */
|
||||
/* Set up MPIO file access property lists */
|
||||
access_plist = H5Pcreate(H5P_FILE_ACCESS);
|
||||
VRFY((access_plist >= 0), "");
|
||||
|
||||
hrc = H5Pset_fapl_mpio(access_plist, comm, info);
|
||||
hrc = H5Pset_fapl_mpio(access_plist, MPI_COMM_WORLD, MPI_INFO_NULL);
|
||||
VRFY((hrc >= 0), "");
|
||||
|
||||
/* Open the file */
|
||||
file_id = H5Fopen(filename, H5F_ACC_RDWR, access_plist);
|
||||
VRFY((file_id >= 0), "");
|
||||
|
||||
/* Can close some plists */
|
||||
hrc = H5Pclose(access_plist);
|
||||
VRFY((hrc >= 0), "");
|
||||
|
||||
/* Open dataset*/
|
||||
dataset = H5Dopen(file_id, DATASETNAME);
|
||||
VRFY((dataset >= 0), "");
|
||||
|
||||
size[0] = ELEMS;
|
||||
#if 0
|
||||
size[0] = DSETSIZE;
|
||||
|
||||
/* Extend dataset*/
|
||||
hrc = H5Dextend(dataset, size);
|
||||
VRFY((hrc >= 0), "");
|
||||
#endif
|
||||
|
||||
/* Close up */
|
||||
hrc = H5Dclose(dataset);
|
||||
@ -146,36 +152,14 @@ printf("extend_chunked_dataset: filename=%s\n", filename);
|
||||
hrc = H5Fclose(file_id);
|
||||
VRFY((hrc >= 0), "");
|
||||
|
||||
mpierr = MPI_File_open(comm, filename, MPI_MODE_RDONLY, info, &thefile);
|
||||
VRFY((mpierr == MPI_SUCCESS), "");
|
||||
/* verify file size has grown */
|
||||
filesize = get_filesize(filename);
|
||||
est_filesize = DSETSIZE*sizeof(H5T_NATIVE_INT);
|
||||
VRFY((filesize>=est_filesize), "file size check");
|
||||
|
||||
mpierr = MPI_File_get_size(thefile, &filesize);
|
||||
VRFY((mpierr == MPI_SUCCESS), "");
|
||||
|
||||
|
||||
/* Definition of lower bound */
|
||||
lb = ELEMS*sizeof(H5T_NATIVE_INT);
|
||||
|
||||
/* Print size of file. */
|
||||
printf("File size: %ld\n", (long int)filesize);
|
||||
|
||||
if (filesize>=lb){
|
||||
printf("Test passed\n");
|
||||
ret = 0;
|
||||
} else {
|
||||
printf("Test failed\n");
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
mpierr = MPI_File_close(&thefile);
|
||||
VRFY((mpierr == MPI_SUCCESS), "");
|
||||
|
||||
hrc = H5close();
|
||||
/* Can close some plists */
|
||||
hrc = H5Pclose(access_plist);
|
||||
VRFY((hrc >= 0), "");
|
||||
|
||||
/* Finalize */
|
||||
mpierr = MPI_Finalize();
|
||||
VRFY((mpierr == MPI_SUCCESS), "");
|
||||
}
|
||||
|
||||
void
|
||||
@ -190,5 +174,5 @@ test_chunk_alloc(void)
|
||||
/* create the datafile first */
|
||||
create_chunked_dataset(filename);
|
||||
/* reopen it in parallel and extend it. */
|
||||
/*extend_chunked_dataset(filename); */
|
||||
extend_chunked_dataset(filename);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user