diff options
Diffstat (limited to 'tools/lib')
-rw-r--r-- | tools/lib/h5diff.c | 48 | ||||
-rw-r--r-- | tools/lib/h5diff.h | 8 | ||||
-rw-r--r-- | tools/lib/h5diff_array.c | 14 | ||||
-rw-r--r-- | tools/lib/h5diff_attr.c | 4 | ||||
-rw-r--r-- | tools/lib/h5diff_dset.c | 137 |
5 files changed, 128 insertions, 83 deletions
diff --git a/tools/lib/h5diff.c b/tools/lib/h5diff.c index 24ec1b9..2f850a6 100644 --- a/tools/lib/h5diff.c +++ b/tools/lib/h5diff.c @@ -39,7 +39,7 @@ /*------------------------------------------------------------------------- * Function: print_objname * - * Purpose: print object name only when: + * Purpose: check if object name is to be printed, only when: * 1) verbose mode * 2) when diff was found (normal mode) *------------------------------------------------------------------------- @@ -50,6 +50,22 @@ print_objname (diff_opt_t * options, hsize_t nfound) return ((options->m_verbose || nfound) && !options->m_quiet) ? 1 : 0; } +/*------------------------------------------------------------------------- + * Function: do_print_objname + * + * Purpose: print object name + * + *------------------------------------------------------------------------- + */ +void +do_print_objname (const char *OBJ, const char *path1, const char *path2) +{ + parallel_print("%s:\n<%s> and <%s> ", OBJ, path1, path2); +} + + + + #ifdef H5_HAVE_PARALLEL /*------------------------------------------------------------------------- * Function: phdiff_dismiss_workers @@ -893,10 +909,10 @@ hsize_t diff (hid_t file1_id, hid_t type2_id=(-1); hid_t grp1_id=(-1); hid_t grp2_id=(-1); - int ret; - H5G_stat_t sb1; - H5G_stat_t sb2; - hsize_t nfound = 0; + int ret; + H5G_stat_t sb1; + H5G_stat_t sb2; + hsize_t nfound=0; switch (type) { @@ -913,8 +929,8 @@ hsize_t diff (hid_t file1_id, if (options->m_verbose) { if (print_objname (options, (hsize_t)1)) - parallel_print("Dataset: <%s> and <%s>\n", path1, path2); - nfound = diff_dataset (file1_id, file2_id, path1, path2, options); + do_print_objname ("dataset", path1, path2); + nfound = diff_dataset (file1_id, file2_id, path1, path2, options, 1); /* always print the number of differences found */ print_found(nfound); } @@ -928,14 +944,14 @@ hsize_t diff (hid_t file1_id, { /* shut up temporarily */ options->m_quiet = 1; - nfound = diff_dataset (file1_id, file2_id, path1, path2, options); + nfound = diff_dataset (file1_id, file2_id, path1, path2, options, 0); /* print again */ options->m_quiet = 0; if (nfound) { if (print_objname (options, nfound)) - parallel_print("Dataset: <%s> and <%s>\n", path1, path2); - nfound = diff_dataset (file1_id, file2_id, path1, path2, options); + do_print_objname ("dataset", path1, path2); + nfound = diff_dataset (file1_id, file2_id, path1, path2, options, 1); /* print the number of differences found only when found this is valid for the default mode and report mode */ print_found(nfound); @@ -948,7 +964,7 @@ hsize_t diff (hid_t file1_id, */ else { - nfound = diff_dataset (file1_id, file2_id, path1, path2, options); + nfound = diff_dataset (file1_id, file2_id, path1, path2, options, 0); } } /*else verbose */ @@ -971,7 +987,7 @@ hsize_t diff (hid_t file1_id, nfound = (ret > 0) ? 0 : 1; if (print_objname (options, nfound)) - parallel_print("Datatype: <%s> and <%s>\n", path1, path2); + do_print_objname ("datatype", path1, path2); /* always print the number of differences found in verbose mode */ if (options->m_verbose) @@ -1008,7 +1024,7 @@ hsize_t diff (hid_t file1_id, nfound = (ret != 0) ? 1 : 0; if (print_objname (options, nfound)) - parallel_print("Group: <%s> and <%s>\n", path1, path2); + do_print_objname ("group", path1, path2); /* always print the number of differences found in verbose mode */ if (options->m_verbose) @@ -1058,7 +1074,7 @@ hsize_t diff (hid_t file1_id, nfound = (ret != 0) ? 1 : 0; if (print_objname (options, nfound)) - parallel_print("Soft Link: <%s> and <%s>\n", path1, path2); + do_print_objname ("soft link", path1, path2); /* always print the number of differences found in verbose mode */ if (options->m_verbose) @@ -1124,7 +1140,7 @@ hsize_t diff (hid_t file1_id, nfound = (ret != 0) ? 1 : 0; if (print_objname (options, nfound)) - parallel_print("External Link: <%s> and <%s>\n", path1, path2); + do_print_objname ("external link", path1, path2); } else { @@ -1141,7 +1157,7 @@ hsize_t diff (hid_t file1_id, nfound = 0; if (print_objname (options, nfound)) - parallel_print("User-defined Link: <%s> and <%s>\n", path1, path2); + do_print_objname ("user defined link", path1, path2); } /* always print the number of differences found in verbose mode */ diff --git a/tools/lib/h5diff.h b/tools/lib/h5diff.h index 4722c82..95fc400 100644 --- a/tools/lib/h5diff.h +++ b/tools/lib/h5diff.h @@ -76,13 +76,15 @@ hsize_t diff_dataset( hid_t file1_id, hid_t file2_id, const char *obj1_name, const char *obj2_name, - diff_opt_t *options ); + diff_opt_t *options, + int print_dims); hsize_t diff_datasetid( hid_t dset1_id, hid_t dset2_id, const char *obj1_name, const char *obj2_name, - diff_opt_t *options ); + diff_opt_t *options, + int print_dims); hsize_t diff( hid_t file1_id, const char *path1, @@ -160,6 +162,8 @@ const char* get_class(H5T_class_t tclass); const char* get_sign(H5T_sign_t sign); void print_dims( int r, hsize_t *d ); int print_objname(diff_opt_t *options, hsize_t nfound); +void do_print_objname (const char *OBJ, const char *path1, const char *path2); + hsize_t diff_datum(void *_mem1, diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c index 1e0417c..bf26370 100644 --- a/tools/lib/h5diff_array.c +++ b/tools/lib/h5diff_array.c @@ -170,17 +170,6 @@ void print_pos( int *ph, /* print header */ { *ph=0; - /* print size of array */ - parallel_print("size [" ); - for ( i = 0; i < rank-1; i++) - { - parallel_print("%"H5_PRINTF_LL_WIDTH"u", (unsigned long_long)dims[i]); - parallel_print("x"); - } - parallel_print("%"H5_PRINTF_LL_WIDTH"u", (unsigned long_long)dims[rank-1]); - parallel_print("]\n" ); - - if (pp) { parallel_print("%-15s %-15s %-15s %-15s %-15s\n", @@ -800,7 +789,8 @@ hsize_t diff_datum(void *_mem1, obj2_id, NULL, NULL, - options); + options, + 0); break; default: parallel_print("Warning: Comparison not possible of object types referenced: <%s> and <%s>", diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c index e10a023..346d64f 100644 --- a/tools/lib/h5diff_attr.c +++ b/tools/lib/h5diff_attr.c @@ -200,7 +200,7 @@ int diff_attr(hid_t loc1_id, /* always print name */ if (options->m_verbose) { - parallel_print( "Attribute: <%s> and <%s>\n",np1,np2); + do_print_objname ("attribute", np1, np2); nfound = diff_array(buf1, buf2, nelmts1, @@ -239,7 +239,7 @@ int diff_attr(hid_t loc1_id, options->m_quiet=0; if (nfound) { - parallel_print( "Attribute: <%s> and <%s>\n",np1,np2); + do_print_objname ("attribute", np1, np2); nfound = diff_array(buf1, buf2, nelmts1, diff --git a/tools/lib/h5diff_dset.c b/tools/lib/h5diff_dset.c index 8e23ff9..e913e79 100644 --- a/tools/lib/h5diff_dset.c +++ b/tools/lib/h5diff_dset.c @@ -18,60 +18,28 @@ #include "H5private.h" #include "h5tools.h" - /*------------------------------------------------------------------------- - * Function: print_sizes + * Function: print_size * - * Purpose: Print datatype sizes + * Purpose: print dimensions * *------------------------------------------------------------------------- */ -#if defined (H5DIFF_DEBUG) -void print_sizes( const char *obj1, - const char *obj2, - hid_t f_tid1, - hid_t f_tid2, - hid_t m_tid1, - hid_t m_tid2 ) +void +print_size (int rank, hsize_t *dims) { - size_t f_size1, f_size2; /* size of type in file */ - size_t m_size1, m_size2; /* size of type in memory */ - - f_size1 = H5Tget_size( f_tid1 ); - f_size2 = H5Tget_size( f_tid2 ); - m_size1 = H5Tget_size( m_tid1 ); - m_size2 = H5Tget_size( m_tid2 ); - - printf("\n"); - printf("------------------\n"); - printf("sizeof(char) %u\n", sizeof(char) ); - printf("sizeof(short) %u\n", sizeof(short) ); - printf("sizeof(int) %u\n", sizeof(int) ); - printf("sizeof(long) %u\n", sizeof(long) ); - printf("<%s> ------------------\n", obj1); - printf("type on file "); - print_type(f_tid1); - printf("\n"); - printf("size on file %u\n", f_size1 ); - - printf("type on memory "); - print_type(m_tid1); - printf("\n"); - printf("size on memory %u\n", m_size1 ); + int i; - printf("<%s> ------------------\n", obj2); - printf("type on file "); - print_type(f_tid2); - printf("\n"); - printf("size on file %u\n", f_size2 ); - - printf("type on memory "); - print_type(m_tid2); - printf("\n"); - printf("size on memory %u\n", m_size2 ); - printf("\n"); + parallel_print("[" ); + for ( i = 0; i < rank-1; i++) + { + parallel_print("%"H5_PRINTF_LL_WIDTH"u", (unsigned long_long)dims[i]); + parallel_print("x"); + } + parallel_print("%"H5_PRINTF_LL_WIDTH"u", (unsigned long_long)dims[rank-1]); + parallel_print("]\n" ); + } -#endif /* H5DIFF_DEBUG */ @@ -93,7 +61,8 @@ hsize_t diff_dataset( hid_t file1_id, hid_t file2_id, const char *obj1_name, const char *obj2_name, - diff_opt_t *options ) + diff_opt_t *options, + int print_dims) { hid_t did1=-1; hid_t did2=-1; @@ -141,7 +110,8 @@ hsize_t diff_dataset( hid_t file1_id, did2, obj1_name, obj2_name, - options); + options, + print_dims); } /*------------------------------------------------------------------------- * close @@ -190,7 +160,8 @@ hsize_t diff_datasetid( hid_t did1, hid_t did2, const char *obj1_name, const char *obj2_name, - diff_opt_t *options ) + diff_opt_t *options, + int print_dims) { hid_t sid1=-1; hid_t sid2=-1; @@ -260,6 +231,13 @@ hsize_t diff_datasetid( hid_t did1, if ( (f_tid2 = H5Dget_type(did2)) < 0 ) goto error; + + /*------------------------------------------------------------------------- + * print dimensions + *------------------------------------------------------------------------- + */ + if (print_dims) + print_size (rank1, dims1); /*------------------------------------------------------------------------- * check for empty datasets @@ -730,7 +708,7 @@ int diff_can_type( hid_t f_tid1, /* file data type */ if ( (H5Tequal(f_tid1, f_tid2)==0) && options->m_verbose && obj1_name) { - printf("warning: different storage datatype\n"); + printf("Warning: different storage datatype\n"); printf("<%s> has file datatype ", obj1_name); print_type(f_tid1); printf("\n"); @@ -807,7 +785,7 @@ int diff_can_type( hid_t f_tid1, /* file data type */ if (maxdim1 && maxdim2 && maxdim_diff==1 && obj1_name ) { if (options->m_verbose) { - printf( "warning: different maximum dimensions\n"); + printf( "Warning: different maximum dimensions\n"); printf("<%s> has max dimensions ", obj1_name); print_dims(rank1,maxdim1); printf("\n"); @@ -819,3 +797,60 @@ int diff_can_type( hid_t f_tid1, /* file data type */ return 1; } + + + + +/*------------------------------------------------------------------------- + * Function: print_sizes + * + * Purpose: Print datatype sizes + * + *------------------------------------------------------------------------- + */ +#if defined (H5DIFF_DEBUG) +void print_sizes( const char *obj1, + const char *obj2, + hid_t f_tid1, + hid_t f_tid2, + hid_t m_tid1, + hid_t m_tid2 ) +{ + size_t f_size1, f_size2; /* size of type in file */ + size_t m_size1, m_size2; /* size of type in memory */ + + f_size1 = H5Tget_size( f_tid1 ); + f_size2 = H5Tget_size( f_tid2 ); + m_size1 = H5Tget_size( m_tid1 ); + m_size2 = H5Tget_size( m_tid2 ); + + printf("\n"); + printf("------------------\n"); + printf("sizeof(char) %u\n", sizeof(char) ); + printf("sizeof(short) %u\n", sizeof(short) ); + printf("sizeof(int) %u\n", sizeof(int) ); + printf("sizeof(long) %u\n", sizeof(long) ); + printf("<%s> ------------------\n", obj1); + printf("type on file "); + print_type(f_tid1); + printf("\n"); + printf("size on file %u\n", f_size1 ); + + printf("type on memory "); + print_type(m_tid1); + printf("\n"); + printf("size on memory %u\n", m_size1 ); + + printf("<%s> ------------------\n", obj2); + printf("type on file "); + print_type(f_tid2); + printf("\n"); + printf("size on file %u\n", f_size2 ); + + printf("type on memory "); + print_type(m_tid2); + printf("\n"); + printf("size on memory %u\n", m_size2 ); + printf("\n"); +} +#endif /* H5DIFF_DEBUG */ |