From 290d03e72f79c334c6da162d9c323252cc92cc00 Mon Sep 17 00:00:00 2001 From: tradke Date: Fri, 17 Nov 2006 13:22:50 +0000 Subject: 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 --- src/DumpVar.c | 16 ++++++++++------ 1 file 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)); -- cgit v1.2.3