aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortradke <tradke@7842ec3a-9562-4be5-9c5b-06ba18f2b668>2006-11-17 13:22:50 +0000
committertradke <tradke@7842ec3a-9562-4be5-9c5b-06ba18f2b668>2006-11-17 13:22:50 +0000
commit290d03e72f79c334c6da162d9c323252cc92cc00 (patch)
tree800cd35c747de2c2cdd7dba2db67c65ae2be3c8d
parentcf5820aa9635b49ee1aa27e4a66d22cb9ca01950 (diff)
Implement variable-specific output request option 'compression_level'
so that users can specify eg. IOHDF5Util::compression_level = 1 IOHDF5::out_vars = "admbase::metric admconstraints::hamiltonian admbase::lapse{ compression_level = 0 }" to request HDF5 dataset compression for every output variable except for the lapse. This modification also requires an update of thorn CactusBase/IOUtil. git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGHIO/IOHDF5Util/trunk@134 7842ec3a-9562-4be5-9c5b-06ba18f2b668
-rw-r--r--src/DumpVar.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/DumpVar.c b/src/DumpVar.c
index 934ef10..18de0ca 100644
--- a/src/DumpVar.c
+++ b/src/DumpVar.c
@@ -523,6 +523,7 @@ static int WriteGA (const cGH *GH, const ioRequest *request, const char *name,
static void WriteData (const cGH *GH, const ioRequest *request,const char *name,
const void *data, int proc, hid_t file)
{
+ DECLARE_CCTK_PARAMETERS
int i, myproc;
ioGH *ioUtilGH;
ioHDF5UtilGH *myGH;
@@ -536,7 +537,8 @@ static void WriteData (const cGH *GH, const ioRequest *request,const char *name,
#endif
hsize_t *chunk_dims, *file_dims;
hsize_t buffersize;
- DECLARE_CCTK_PARAMETERS
+ const int compression_lvl = request->compression_level >= 0 ?
+ request->compression_level : compression_level;
/* immediately return if file handle is invalid */
@@ -581,12 +583,12 @@ static void WriteData (const cGH *GH, const ioRequest *request,const char *name,
when writing its own data, otherwise the dataset is reopened */
if (proc == myproc)
{
- HDF5_ERROR (plist = H5Pcreate (H5P_DATASET_CREATE));
/* enable compression for chunked dataset if compression was requested */
- if (compression_level)
+ HDF5_ERROR (plist = H5Pcreate (H5P_DATASET_CREATE));
+ if (compression_lvl)
{
HDF5_ERROR (H5Pset_chunk (plist, request->hdim, chunk_dims));
- HDF5_ERROR (H5Pset_deflate (plist, compression_level));
+ HDF5_ERROR (H5Pset_deflate (plist, compression_lvl));
}
HDF5_ERROR (dataset = H5Dcreate (file, name, hdf5type, filespace, plist));
HDF5_ERROR (H5Pclose (plist));
@@ -722,6 +724,8 @@ static void WriteDataCollective (const cGH *GH, const ioRequest *request,
hsize_t *chunk_dims, *file_dims;
hsize_t buffersize;
const ioHDF5UtilGH *myGH;
+ const int compression_lvl = request->compression_level >= 0 ?
+ request->compression_level : compression_level;
DECLARE_CCTK_PARAMETERS
@@ -758,10 +762,10 @@ static void WriteDataCollective (const cGH *GH, const ioRequest *request,
/* enable compression for chunked dataset if compression was requested */
HDF5_ERROR (plist = H5Pcreate (H5P_DATASET_CREATE));
- if (compression_level)
+ if (compression_lvl)
{
HDF5_ERROR (H5Pset_chunk (plist, request->hdim, chunk_dims));
- HDF5_ERROR (H5Pset_deflate (plist, compression_level));
+ HDF5_ERROR (H5Pset_deflate (plist, compression_lvl));
}
HDF5_ERROR (dataset = H5Dcreate (file, name, hdf5type, filespace, plist));
HDF5_ERROR (H5Pclose (plist));