summaryrefslogtreecommitdiffstats
path: root/tools/h5repack
diff options
context:
space:
mode:
authorPedro Vicente Nunes <pvn@hdfgroup.org>2006-11-16 20:38:05 (GMT)
committerPedro Vicente Nunes <pvn@hdfgroup.org>2006-11-16 20:38:05 (GMT)
commit8040a0f38168981415a3350bc7baa01a6d6409b8 (patch)
treed54770148ac9da19970cb1fe38706e36240af9e5 /tools/h5repack
parentf02a3bd46d1688345dfc11e2179098c2b504b70a (diff)
downloadhdf5-8040a0f38168981415a3350bc7baa01a6d6409b8.zip
hdf5-8040a0f38168981415a3350bc7baa01a6d6409b8.tar.gz
hdf5-8040a0f38168981415a3350bc7baa01a6d6409b8.tar.bz2
[svn-r12928] code revision
Diffstat (limited to 'tools/h5repack')
-rw-r--r--tools/h5repack/h5repack.c5
-rw-r--r--tools/h5repack/h5repack.h7
-rw-r--r--tools/h5repack/h5repack_copy.c58
-rw-r--r--tools/h5repack/h5repack_filters.c2
-rw-r--r--tools/h5repack/h5repack_list.c2
-rw-r--r--tools/h5repack/h5repack_opttable.c12
-rw-r--r--tools/h5repack/h5repack_verify.c7
-rw-r--r--tools/h5repack/h5repacktst.c27
8 files changed, 80 insertions, 40 deletions
diff --git a/tools/h5repack/h5repack.c b/tools/h5repack/h5repack.c
index 3469704..2c220c3 100644
--- a/tools/h5repack/h5repack.c
+++ b/tools/h5repack/h5repack.c
@@ -247,8 +247,9 @@ int h5repack_addlayout(const char* str,
*/
static int check_options(pack_opt_t *options)
{
- int i, k, j, has_cp=0, has_ck=0;
- char slayout[30];
+ unsigned int i;
+ int k, j, has_cp=0, has_ck=0;
+ char slayout[30];
/*-------------------------------------------------------------------------
* objects to layout
diff --git a/tools/h5repack/h5repack.h b/tools/h5repack/h5repack.h
index 0f5ccfe..9b1d911 100644
--- a/tools/h5repack/h5repack.h
+++ b/tools/h5repack/h5repack.h
@@ -80,9 +80,9 @@ typedef struct {
/* store a table of all objects */
typedef struct {
- int size;
- int nelems;
- pack_info_t *objs;
+ unsigned int size;
+ unsigned int nelems;
+ pack_info_t *objs;
} pack_opttbl_t;
@@ -102,7 +102,6 @@ typedef struct {
int verbose; /*verbose mode */
hsize_t threshold; /*minimum size to compress, in bytes */
int use_native; /*use a native type in write */
- int have_fc_f; /*has input to use filter/chunking flag */
} pack_opt_t;
diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c
index 03da178..f6b738c 100644
--- a/tools/h5repack/h5repack_copy.c
+++ b/tools/h5repack/h5repack_copy.c
@@ -24,7 +24,6 @@ extern char *progname;
static int do_create_refs;
-
#define PER(A,B) { per = 0; \
if (A!=0) \
per = (float)fabs( ((float)B - (float)A) / (float) A ); \
@@ -317,9 +316,12 @@ int do_copy_objects(hid_t fidin,
float per; /* percent utilization of storage */
void *buf=NULL; /* buffer for raw data */
void *sm_buf=NULL; /* buffer for raw data */
- int i, j;
+ unsigned i;
int nfilters; /* number of filters in DCPL */
H5D_layout_t layout;
+#if defined(H5REPACK_GETTIME)
+ time_t start_time, finish_time, time_secs;
+#endif
/*-------------------------------------------------------------------------
* copy the suppplied object list
@@ -411,6 +413,11 @@ int do_copy_objects(hid_t fidin,
options->all_filter==1 || options->all_layout==1
)
{
+ int j;
+
+#if defined(H5REPACK_GETTIME)
+ time( &start_time );
+#endif
if ((dset_in=H5Dopen(fidin,travt->objs[i].name))<0)
goto error;
if ((f_space_id=H5Dget_space(dset_in))<0)
@@ -540,6 +547,7 @@ int do_copy_objects(hid_t fidin,
hsize_t hs_size[H5S_MAX_RANK]; /*size this pass */
hsize_t hs_nelmts; /*elements in request */
hsize_t zero[8]; /*vector of zeros */
+ int k;
/* check if we have VL data in the dataset's datatype */
if (H5Tdetect_class(wtype_id, H5T_VLEN) == TRUE)
@@ -551,9 +559,9 @@ int do_copy_objects(hid_t fidin,
*/
sm_nbytes = p_type_nbytes;
- for (i = rank; i > 0; --i) {
- sm_size[i - 1] = MIN(dims[i - 1], H5TOOLS_BUFSIZE / sm_nbytes);
- sm_nbytes *= sm_size[i - 1];
+ for (k = rank; k > 0; --k) {
+ sm_size[k - 1] = MIN(dims[k - 1], H5TOOLS_BUFSIZE / sm_nbytes);
+ sm_nbytes *= sm_size[k - 1];
assert(sm_nbytes > 0);
}
sm_buf = HDmalloc((size_t)sm_nbytes);
@@ -570,10 +578,10 @@ int do_copy_objects(hid_t fidin,
/* calculate the hyperslab size */
if (rank > 0)
{
- for (i = 0, hs_nelmts = 1; i < rank; i++)
+ for (k = 0, hs_nelmts = 1; k < rank; k++)
{
- hs_size[i] = MIN(dims[i] - hs_offset[i], sm_size[i]);
- hs_nelmts *= hs_size[i];
+ hs_size[k] = MIN(dims[k] - hs_offset[k], sm_size[k]);
+ hs_nelmts *= hs_size[k];
}
if (H5Sselect_hyperslab(f_space_id, H5S_SELECT_SET, hs_offset, NULL, hs_size, NULL)<0)
@@ -599,14 +607,14 @@ int do_copy_objects(hid_t fidin,
H5Dvlen_reclaim(wtype_id, sm_space, H5P_DEFAULT, sm_buf);
/* calculate the next hyperslab offset */
- for (i = rank, carry = 1; i > 0 && carry; --i)
+ for (k = rank, carry = 1; k > 0 && carry; --k)
{
- hs_offset[i - 1] += hs_size[i - 1];
- if (hs_offset[i - 1] == dims[i - 1])
- hs_offset[i - 1] = 0;
+ hs_offset[k - 1] += hs_size[k - 1];
+ if (hs_offset[k - 1] == dims[k - 1])
+ hs_offset[k - 1] = 0;
else
carry = 0;
- } /* i */
+ } /* k */
} /* elmtno */
H5Sclose(sm_space);
@@ -677,6 +685,12 @@ int do_copy_objects(hid_t fidin,
if (H5Dclose(dset_in)<0)
goto error;
+#if defined(H5REPACK_GETTIME)
+ time( &finish_time );
+ time_secs = finish_time-start_time;
+ printf("time1=%d secs\n",time_secs);
+#endif
+
}
/*-------------------------------------------------------------------------
* we do not have request for filter/chunking use H5Ocopy instead
@@ -686,6 +700,10 @@ int do_copy_objects(hid_t fidin,
{
hid_t pid;
+#if defined(H5REPACK_GETTIME)
+ time( &start_time );
+#endif
+
/* create property to pass copy options */
if ( (pid = H5Pcreate(H5P_OBJECT_COPY)) < 0)
goto error;
@@ -707,6 +725,13 @@ int do_copy_objects(hid_t fidin,
if (H5Pclose(pid)<0)
goto error;
+#if defined(H5REPACK_GETTIME)
+ time( &finish_time );
+ time_secs = finish_time-start_time;
+ printf("time2=%d secs\n",time_secs);
+#endif
+
+
} /* end do we have request for filter/chunking */
@@ -1003,7 +1028,7 @@ error:
static
int do_hardlinks(hid_t fidout,trav_table_t *travt)
{
- int i, j;
+ unsigned int i, j;
for ( i = 0; i < travt->nobjs; i++)
{
@@ -1093,7 +1118,8 @@ int do_copy_refobjs(hid_t fidin,
int rank; /* rank of dataset */
hsize_t dims[H5S_MAX_RANK];/* dimensions of dataset */
int next; /* external files */
- int i, j;
+ unsigned i;
+ int j;
/*-------------------------------------------------------------------------
* browse
@@ -1739,7 +1765,7 @@ static const char* MapIdToName(hid_t refobj_id,
hid_t fid;
H5G_stat_t refstat; /* Stat for the refobj id */
H5G_stat_t objstat; /* Stat for objects in the file */
- int i;
+ unsigned int i;
/* obtain information to identify the referenced object uniquely */
if(H5Gget_objinfo(refobj_id, ".", 0, &refstat) <0)
diff --git a/tools/h5repack/h5repack_filters.c b/tools/h5repack/h5repack_filters.c
index 60a0336..a525e0d 100644
--- a/tools/h5repack/h5repack_filters.c
+++ b/tools/h5repack/h5repack_filters.c
@@ -32,7 +32,7 @@ int aux_find_obj(const char* name, /* object name from traverse list */
{
char *pdest;
int result;
- int i;
+ unsigned int i;
for ( i=0; i<options->op_tbl->nelems; i++)
{
diff --git a/tools/h5repack/h5repack_list.c b/tools/h5repack/h5repack_list.c
index 9912732..cb9cad9 100644
--- a/tools/h5repack/h5repack_list.c
+++ b/tools/h5repack/h5repack_list.c
@@ -39,7 +39,7 @@ int check_objects(const char* fname,
pack_opt_t *options)
{
hid_t fid;
- int i;
+ unsigned int i;
trav_table_t *travt=NULL;
/*-------------------------------------------------------------------------
diff --git a/tools/h5repack/h5repack_opttable.c b/tools/h5repack/h5repack_opttable.c
index a0b1698..c77837e 100644
--- a/tools/h5repack/h5repack_opttable.c
+++ b/tools/h5repack/h5repack_opttable.c
@@ -122,7 +122,7 @@ static void aux_tblinsert_layout(pack_opttbl_t *table,
static int aux_inctable(pack_opttbl_t *table, int n_objs )
{
- int i;
+ unsigned int i;
table->size += n_objs;
table->objs = (pack_info_t*)realloc(table->objs, table->size * sizeof(pack_info_t));
@@ -149,7 +149,7 @@ static int aux_inctable(pack_opttbl_t *table, int n_objs )
int options_table_init( pack_opttbl_t **tbl )
{
- int i;
+ unsigned int i;
pack_opttbl_t* table = (pack_opttbl_t*) malloc(sizeof(pack_opttbl_t));
if (table==NULL) {
error_msg(progname, "not enough memory for options table\n");
@@ -206,7 +206,8 @@ int options_add_layout( obj_list_t *obj_list,
pack_info_t *pack,
pack_opttbl_t *table )
{
- int i, j, I, added=0, found=0;
+ unsigned int i;
+ int j, I, added=0, found=0;
/* increase the size of the collection by N_OBJS if necessary */
if (table->nelems+n_objs >= table->size)
@@ -304,7 +305,8 @@ int options_add_filter(obj_list_t *obj_list,
pack_opttbl_t *table )
{
- int i, j, I, added=0, found=0;
+ unsigned int i;
+ int j, I, added=0, found=0;
/* increase the size of the collection by N_OBJS if necessary */
if (table->nelems+n_objs >= table->size)
@@ -387,7 +389,7 @@ int options_add_filter(obj_list_t *obj_list,
pack_info_t* options_get_object( const char *path,
pack_opttbl_t *table )
{
- int i;
+ unsigned int i;
for ( i = 0; i < table->nelems; i++)
{
diff --git a/tools/h5repack/h5repack_verify.c b/tools/h5repack/h5repack_verify.c
index a19f9f6..2247171 100644
--- a/tools/h5repack/h5repack_verify.c
+++ b/tools/h5repack/h5repack_verify.c
@@ -173,7 +173,9 @@ int h5repack_verify(const char *fname,
hid_t dset_id=-1; /* dataset ID */
hid_t dcpl_id=-1; /* dataset creation property list ID */
hid_t space_id=-1; /* space ID */
- int ret=1, i, j;
+ int ret=1;
+ unsigned int i;
+ int j;
trav_table_t *travt=NULL;
/* open the file */
@@ -355,7 +357,8 @@ int h5repack_cmpdcpl(const char *fname1,
hid_t dcpl2=-1; /* dataset creation property list ID */
trav_table_t *travt1=NULL;
trav_table_t *travt2=NULL;
- int ret=1, i;
+ int ret=1;
+ unsigned int i;
/*-------------------------------------------------------------------------
* open the files first; if they are not valid, no point in continuing
diff --git a/tools/h5repack/h5repacktst.c b/tools/h5repack/h5repacktst.c
index 801ed5a..df231aa 100644
--- a/tools/h5repack/h5repacktst.c
+++ b/tools/h5repack/h5repacktst.c
@@ -98,7 +98,7 @@ int make_nbit(hid_t loc_id);
int make_scaleoffset(hid_t loc_id);
int make_all(hid_t loc_id);
int make_fill(hid_t loc_id);
-int make_big(hid_t loc_id);
+int make_big(hid_t loc_id, int set_chunk);
int make_testfiles(void);
void write_dset_in(hid_t loc_id,const char* dset_name,hid_t file_id,int make_diffs );
void write_attr_in(hid_t loc_id,const char* dset_name,hid_t fid,int make_diffs );
@@ -1448,12 +1448,12 @@ int make_testfiles(void)
return -1;
/*-------------------------------------------------------------------------
- * create a big file
+ * create a big dataset
*-------------------------------------------------------------------------
*/
if((loc_id = H5Fcreate(FNAME14,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
return -1;
- if (make_big(loc_id)<0)
+ if (make_big(loc_id, 1)<0)
goto out;
if(H5Fclose(loc_id)<0)
return -1;
@@ -2554,13 +2554,14 @@ out:
/*-------------------------------------------------------------------------
* Function: make_big
*
- * Purpose: used in test read by hyperslabs. create a dataset with 1GB dimensions
- * by iterating trough 1MB hyperslabs
+ * Purpose: used in test read by hyperslabs. Can create 1GB datasets, either with
+ * chunk layout or with contiguous layout, by iterating trough 1MB hyperslabs.
+ * Only 1 hyperslab is written. Only the chunk case is called.
*
*-------------------------------------------------------------------------
*/
-int make_big(hid_t loc_id)
+int make_big(hid_t loc_id, int set_chunk)
{
hid_t did=-1;
hid_t f_sid=-1;
@@ -2577,17 +2578,25 @@ int make_big(hid_t loc_id)
char *buf=NULL;
int i, j, s;
char c;
+ char name[20];
+
+ strcpy(name,"conti");
/* create */
if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
goto out;
if (H5Pset_fill_value(dcpl, H5T_NATIVE_CHAR, &fillvalue)<0)
goto out;
- if(H5Pset_chunk(dcpl, 1, chunk_dims)<0)
- goto out;
+
+ if (set_chunk)
+ {
+ strcpy(name,"chunk");
+ if(H5Pset_chunk(dcpl, 1, chunk_dims)<0)
+ goto out;
+ }
if ((f_sid = H5Screate_simple(1,dims,NULL))<0)
goto out;
- if ((did = H5Dcreate(loc_id,"big",H5T_NATIVE_CHAR,f_sid,dcpl))<0)
+ if ((did = H5Dcreate(loc_id,name,H5T_NATIVE_CHAR,f_sid,dcpl))<0)
goto out;
if ((m_sid = H5Screate_simple(1, hs_size, hs_size))<0)
goto out;