diff options
author | Raymond Lu <songyulu@hdfgroup.org> | 2007-06-19 20:05:24 (GMT) |
---|---|---|
committer | Raymond Lu <songyulu@hdfgroup.org> | 2007-06-19 20:05:24 (GMT) |
commit | 6017d0c70fda2a36cf963193e979f0548cb0c954 (patch) | |
tree | bc54a1f86fb94fe5dcecd2ba8b2b2623c5c38a77 /src/H5Tpkg.h | |
parent | 32d09759bdf082d1a5d87903a58b0ed6c03dbe8c (diff) | |
download | hdf5-6017d0c70fda2a36cf963193e979f0548cb0c954.zip hdf5-6017d0c70fda2a36cf963193e979f0548cb0c954.tar.gz hdf5-6017d0c70fda2a36cf963193e979f0548cb0c954.tar.bz2 |
[svn-r13884] The second step of optimization for compound data for the Chicago
company. The I/O is optimized when the source and destination
members are a subset of each other one way or another, and
the order is the same, and no conversion is needed. For example:
struct source { struct destination {
TYPE1 A; --> TYPE1 A;
TYPE2 B; --> TYPE2 B;
TYPE3 C; --> TYPE3 C;
}; TYPE4 D;
TYPE5 E;
};
or
struct destination { struct source {
TYPE1 A; --> TYPE1 A;
TYPE2 B; --> TYPE2 B;
TYPE3 C; --> TYPE3 C;
}; TYPE4 D;
TYPE5 E;
};
The optimization is simply moving data from the source to the
appropriate places in the buffer and bypass the reading of
the background data and data conversion.
Tested on smirom, liberty, sol, and copper.
Diffstat (limited to 'src/H5Tpkg.h')
-rw-r--r-- | src/H5Tpkg.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h index c9fba39..fd3bc39 100644 --- a/src/H5Tpkg.h +++ b/src/H5Tpkg.h @@ -192,6 +192,7 @@ struct H5T_path_t { H5T_conv_t func; /*data conversion function */ hbool_t is_hard; /*is it a hard function? */ hbool_t is_noop; /*is it the noop conversion? */ + hbool_t are_compounds; /*are source and dest both compounds?*/ H5T_stats_t stats; /*statistics for the conversion */ H5T_cdata_t cdata; /*data for this function */ }; @@ -1338,6 +1339,8 @@ H5_DLL H5T_t *H5T_get_member_type(const H5T_t *dt, unsigned membno); H5_DLL size_t H5T_get_member_offset(const H5T_t *dt, unsigned membno); H5_DLL size_t H5T_get_member_size(const H5T_t *dt, unsigned membno); H5_DLL htri_t H5T_is_packed(const H5T_t *dt); +H5_DLL H5T_subset_t H5T_conv_struct_subset(const H5T_cdata_t *cdata); +H5_DLL H5T_subset_t H5T_path_compound_subset(const H5T_path_t *p); #endif /* _H5Tpkg_H */ |