diff options
author | Vailin Choi <vchoi@hdfgroup.org> | 2019-09-26 18:41:56 (GMT) |
---|---|---|
committer | Vailin Choi <vchoi@hdfgroup.org> | 2019-09-26 18:41:56 (GMT) |
commit | 52fef3c6d2b79399caa316cf7f380e61db95ba0e (patch) | |
tree | 674e43393bf837a1ac750a0d9766e948636245d5 /c++/examples/chunks.cpp | |
parent | c7b9d5acc69e22c153864e31f7422cd466da0b35 (diff) | |
parent | 0ea77179d507bd2c29f3b9b357a0c35d4077b29c (diff) | |
download | hdf5-52fef3c6d2b79399caa316cf7f380e61db95ba0e.zip hdf5-52fef3c6d2b79399caa316cf7f380e61db95ba0e.tar.gz hdf5-52fef3c6d2b79399caa316cf7f380e61db95ba0e.tar.bz2 |
Merge pull request #21 in ~VCHOI/my_third_fork from develop to bugfix/HDFFV-10585-investigate-slowness-of-regular
* commit '0ea77179d507bd2c29f3b9b357a0c35d4077b29c': (39 commits)
Fix the errors when updating the versions in the new 1.13 develop branch.
add missing version to list
Add new versioned filename to list
Update N_FSINFO_VERSION_BOUNDS to H5F_LIBVER_NBOUND.
Remove file script
Update versioning to next major version
Update develop branch version to 1.13.0 after creation of hdf5_1_12 branch.
Merge Binh-Minh's changes for code improvement to chunk_info.c (PR #1942) to develop branch.
Update to current external file population.
Revert else-if to single line.
Fix missing option and incorrect close
Revert "Moved NDEBUG guards to H5EA_DEBUG in H5EA package."
Revert "Fix for H5EA debug package when built in release mode."
Change print calls to HD-wrapped. Minor formatting tweaks (inc. regressions and in-file style-matching).
Refactor h5repackgentest to have more modular internals, for easier addition of new tests. Update manifest and test script for new hdf5 external-storage .h5 files.
Remove obsolete symbol
small syntax changes
Renamed get/set_time() calls in the tools library to avoid name clash when building static parallel HDF5 w/ static linking to OpenMPI.
Change unused variable to generic form
Whitespace cleanup
...
Diffstat (limited to 'c++/examples/chunks.cpp')
-rw-r--r-- | c++/examples/chunks.cpp | 338 |
1 files changed, 169 insertions, 169 deletions
diff --git a/c++/examples/chunks.cpp b/c++/examples/chunks.cpp index 142e70f..03e2855 100644 --- a/c++/examples/chunks.cpp +++ b/c++/examples/chunks.cpp @@ -37,194 +37,194 @@ const int RANKC = 1; int main (void) { - hsize_t i, j; + hsize_t i, j; // Try block to detect exceptions raised by any of the calls inside it try { - /* - * Turn off the auto-printing when failure occurs so that we can - * handle the errors appropriately - */ - Exception::dontPrint(); - - /* - * Open the file and the dataset. - */ - H5File file( FILE_NAME, H5F_ACC_RDONLY ); - DataSet dataset = file.openDataSet( DATASET_NAME ); - - /* - * Get filespace for rank and dimension - */ - DataSpace filespace = dataset.getSpace(); - - /* - * Get number of dimensions in the file dataspace - */ - int rank = filespace.getSimpleExtentNdims(); - - /* - * Get and print the dimension sizes of the file dataspace - */ - hsize_t dims[2]; // dataset dimensions - rank = filespace.getSimpleExtentDims( dims ); - cout << "dataset rank = " << rank << ", dimensions " - << (unsigned long)(dims[0]) << " x " - << (unsigned long)(dims[1]) << endl; - - /* - * Define the memory space to read dataset. - */ - DataSpace mspace1(RANK, dims); - - /* - * Read dataset back and display. - */ - int data_out[NX][NY]; // buffer for dataset to be read - dataset.read( data_out, PredType::NATIVE_INT, mspace1, filespace ); - - cout << "\n"; - cout << "Dataset: \n"; - for (j = 0; j < dims[0]; j++) - { - for (i = 0; i < dims[1]; i++) - cout << data_out[j][i] << " "; - cout << endl; - } - - /* - * dataset rank 2, dimensions 10 x 5 - * chunk rank 2, dimensions 2 x 5 - - * Dataset: - * 1 1 1 3 3 - * 1 1 1 3 3 - * 1 1 1 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - */ - - /* - * Read the third column from the dataset. - * First define memory dataspace, then define hyperslab - * and read it into column array. - */ - hsize_t col_dims[1]; - col_dims[0] = 10; - DataSpace mspace2( RANKC, col_dims ); - - /* - * Define the column (hyperslab) to read. - */ - hsize_t offset[2] = { 0, 2 }; - hsize_t count[2] = { 10, 1 }; - int column[10]; // buffer for column to be read - - /* - * Define hyperslab and read. - */ - filespace.selectHyperslab( H5S_SELECT_SET, count, offset ); - dataset.read( column, PredType::NATIVE_INT, mspace2, filespace ); - - cout << endl; - cout << "Third column: " << endl; - for (i = 0; i < 10; i++) - cout << column[i] << endl; - - /* - * Third column: - * 1 - * 1 - * 1 - * 0 - * 0 - * 0 - * 0 - * 0 - * 0 - * 0 - */ - - /* - * Get creation properties list. - */ - DSetCreatPropList cparms = dataset.getCreatePlist(); - - /* - * Check if dataset is chunked. - */ - hsize_t chunk_dims[2]; - int rank_chunk; - if( H5D_CHUNKED == cparms.getLayout() ) - { - /* - * Get chunking information: rank and dimensions - */ - rank_chunk = cparms.getChunk( 2, chunk_dims); - cout << "chunk rank " << rank_chunk << "dimensions " - << (unsigned long)(chunk_dims[0]) << " x " - << (unsigned long)(chunk_dims[1]) << endl; - - /* - * Define the memory space to read a chunk. - */ - DataSpace mspace3( rank_chunk, chunk_dims ); - - /* - * Define chunk in the file (hyperslab) to read. - */ - offset[0] = 2; - offset[1] = 0; - count[0] = chunk_dims[0]; - count[1] = chunk_dims[1]; - filespace.selectHyperslab( H5S_SELECT_SET, count, offset ); - - /* - * Read chunk back and display. - */ - int chunk_out[2][5]; // buffer for chunk to be read - dataset.read( chunk_out, PredType::NATIVE_INT, mspace3, filespace ); - cout << endl; - cout << "Chunk:" << endl; - for (j = 0; j < chunk_dims[0]; j++) - { - for (i = 0; i < chunk_dims[1]; i++) - cout << chunk_out[j][i] << " "; - cout << endl; - } - /* - * Chunk: - * 1 1 1 0 0 - * 2 0 0 0 0 - */ - } + /* + * Turn off the auto-printing when failure occurs so that we can + * handle the errors appropriately + */ + Exception::dontPrint(); + + /* + * Open the file and the dataset. + */ + H5File file( FILE_NAME, H5F_ACC_RDONLY ); + DataSet dataset = file.openDataSet( DATASET_NAME ); + + /* + * Get filespace for rank and dimension + */ + DataSpace filespace = dataset.getSpace(); + + /* + * Get number of dimensions in the file dataspace + */ + int rank = filespace.getSimpleExtentNdims(); + + /* + * Get and print the dimension sizes of the file dataspace + */ + hsize_t dims[2]; // dataset dimensions + rank = filespace.getSimpleExtentDims( dims ); + cout << "dataset rank = " << rank << ", dimensions " + << (unsigned long)(dims[0]) << " x " + << (unsigned long)(dims[1]) << endl; + + /* + * Define the memory space to read dataset. + */ + DataSpace mspace1(RANK, dims); + + /* + * Read dataset back and display. + */ + int data_out[NX][NY]; // buffer for dataset to be read + dataset.read( data_out, PredType::NATIVE_INT, mspace1, filespace ); + + cout << "\n"; + cout << "Dataset: \n"; + for (j = 0; j < dims[0]; j++) + { + for (i = 0; i < dims[1]; i++) + cout << data_out[j][i] << " "; + cout << endl; + } + + /* + * dataset rank 2, dimensions 10 x 5 + * chunk rank 2, dimensions 2 x 5 + + * Dataset: + * 1 1 1 3 3 + * 1 1 1 3 3 + * 1 1 1 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + */ + + /* + * Read the third column from the dataset. + * First define memory dataspace, then define hyperslab + * and read it into column array. + */ + hsize_t col_dims[1]; + col_dims[0] = 10; + DataSpace mspace2( RANKC, col_dims ); + + /* + * Define the column (hyperslab) to read. + */ + hsize_t offset[2] = { 0, 2 }; + hsize_t count[2] = { 10, 1 }; + int column[10]; // buffer for column to be read + + /* + * Define hyperslab and read. + */ + filespace.selectHyperslab( H5S_SELECT_SET, count, offset ); + dataset.read( column, PredType::NATIVE_INT, mspace2, filespace ); + + cout << endl; + cout << "Third column: " << endl; + for (i = 0; i < 10; i++) + cout << column[i] << endl; + + /* + * Third column: + * 1 + * 1 + * 1 + * 0 + * 0 + * 0 + * 0 + * 0 + * 0 + * 0 + */ + + /* + * Get creation properties list. + */ + DSetCreatPropList cparms = dataset.getCreatePlist(); + + /* + * Check if dataset is chunked. + */ + hsize_t chunk_dims[2]; + int rank_chunk; + if( H5D_CHUNKED == cparms.getLayout() ) + { + /* + * Get chunking information: rank and dimensions + */ + rank_chunk = cparms.getChunk( 2, chunk_dims); + cout << "chunk rank " << rank_chunk << "dimensions " + << (unsigned long)(chunk_dims[0]) << " x " + << (unsigned long)(chunk_dims[1]) << endl; + + /* + * Define the memory space to read a chunk. + */ + DataSpace mspace3( rank_chunk, chunk_dims ); + + /* + * Define chunk in the file (hyperslab) to read. + */ + offset[0] = 2; + offset[1] = 0; + count[0] = chunk_dims[0]; + count[1] = chunk_dims[1]; + filespace.selectHyperslab( H5S_SELECT_SET, count, offset ); + + /* + * Read chunk back and display. + */ + int chunk_out[2][5]; // buffer for chunk to be read + dataset.read( chunk_out, PredType::NATIVE_INT, mspace3, filespace ); + cout << endl; + cout << "Chunk:" << endl; + for (j = 0; j < chunk_dims[0]; j++) + { + for (i = 0; i < chunk_dims[1]; i++) + cout << chunk_out[j][i] << " "; + cout << endl; + } + /* + * Chunk: + * 1 1 1 0 0 + * 2 0 0 0 0 + */ + } } // end of try block // catch failure caused by the H5File operations catch( FileIException error ) { - error.printErrorStack(); - return -1; + error.printErrorStack(); + return -1; } // catch failure caused by the DataSet operations catch( DataSetIException error ) { - error.printErrorStack(); - return -1; + error.printErrorStack(); + return -1; } // catch failure caused by the DataSpace operations catch( DataSpaceIException error ) { - error.printErrorStack(); - return -1; + error.printErrorStack(); + return -1; } return 0; } |