summaryrefslogtreecommitdiffstats
path: root/examples/h5_vds-percival-unlim.c
diff options
context:
space:
mode:
authorElena Pourmal <epourmal@hdfgroup.org>2015-05-05 20:41:21 (GMT)
committerElena Pourmal <epourmal@hdfgroup.org>2015-05-05 20:41:21 (GMT)
commiteda6bf097aec520926d91e10319420edef1fc95b (patch)
treee79d3bb30c811e629cab7e7cd0c3292bf68012d5 /examples/h5_vds-percival-unlim.c
parent8fe3dfbf9410ad5acabeaeb187bfb5f7b489042e (diff)
downloadhdf5-eda6bf097aec520926d91e10319420edef1fc95b.zip
hdf5-eda6bf097aec520926d91e10319420edef1fc95b.tar.gz
hdf5-eda6bf097aec520926d91e10319420edef1fc95b.tar.bz2
[svn-r27024] Modified Percival example to read VDS data.
First, the example reads all VDS data, then the data that is in the first source dataset. Tested on jam.
Diffstat (limited to 'examples/h5_vds-percival-unlim.c')
-rw-r--r--examples/h5_vds-percival-unlim.c79
1 files changed, 69 insertions, 10 deletions
diff --git a/examples/h5_vds-percival-unlim.c b/examples/h5_vds-percival-unlim.c
index eaa83b4..b1acae1 100644
--- a/examples/h5_vds-percival-unlim.c
+++ b/examples/h5_vds-percival-unlim.c
@@ -64,13 +64,15 @@ main (void)
stride_out[3],
count_out[3],
block_out[3];
- int i, j;
+ int i, j, k;
H5D_layout_t layout; /* Storage layout */
size_t num_map; /* Number of mappings */
ssize_t len; /* Length of the string; also a return value */
char *filename;
char *dsetname;
int wdata[DIM0_1*DIM1*DIM2];
+ int rdata[80][10][10];
+ int a_rdata[20][10][10];
/*
* Create source files and datasets. This step is optional.
@@ -193,15 +195,6 @@ main (void)
status = H5Fclose (file);
}
- /* Let's get space of the VDS and its dimension; we should get 80x10x10 */
- vspace = H5Dget_space (vdset);
- H5Sget_simple_extent_dims (vspace, vdsdims_out, vdsdims_max_out);
- printf ("VDS dimensions second time \n");
- printf (" Current: ");
- for (i=0; i<RANK; i++)
- printf (" %d ", (int)vdsdims_out[i]);
- printf ("\n");
-
status = H5Dclose (vdset);
status = H5Fclose (vfile);
@@ -283,8 +276,74 @@ main (void)
free(dsetname);
}
/*
+ * Read data from VDS.
+ */
+ vspace = H5Dget_space (vdset);
+ H5Sget_simple_extent_dims (vspace, vdsdims_out, vdsdims_max_out);
+ printf ("VDS dimensions second time \n");
+ printf (" Current: ");
+ for (i=0; i<RANK; i++)
+ printf (" %d ", (int)vdsdims_out[i]);
+ printf ("\n");
+
+ /* Read all VDS data */
+
+ //EIP We should be able to do it by using H5S_ALL instead of making selection
+ // or using H5Sselect_all from vspace.
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ count[0] = 1;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = vdsdims_out[0];
+ block[1] = vdsdims_out[1];
+ block[2] = vdsdims_out[2];
+
+ status = H5Sselect_hyperslab (vspace, H5S_SELECT_SET, start, NULL, count, block);
+ mem_space = H5Screate_simple(RANK, vdsdims_out, NULL);
+ status = H5Dread (vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT,
+ rdata);
+ printf (" All data: \n");
+ for (i=0; i < (int)vdsdims_out[0]; i++) {
+ for (j=0; j < (int)vdsdims_out[1]; j++) {
+ printf ("(%d, %d, 0)", i, j);
+ for (k=0; k < (int)vdsdims_out[2]; k++)
+ printf (" %d ", rdata[i][j][k]);
+ printf ("\n");
+ }
+ }
+ /* Read VDS, but only data mapeed to dataset a.h5 */
+ start[0] = 0;
+ start[1] = 0;
+ start[2] = 0;
+ stride[0] = PLANE_STRIDE;
+ stride[1] = 1;
+ stride[2] = 1;
+ count[0] = 2*DIM0_1;
+ count[1] = 1;
+ count[2] = 1;
+ block[0] = 1;
+ block[1] = vdsdims_out[1];
+ block[2] = vdsdims_out[2];
+ dims[0] = 2*DIM0_1;
+ status = H5Sselect_hyperslab (vspace, H5S_SELECT_SET, start, stride, count, block);
+ mem_space = H5Screate_simple(RANK, dims, NULL);
+ status = H5Dread (vdset, H5T_NATIVE_INT, mem_space, vspace, H5P_DEFAULT,
+ a_rdata);
+ printf (" All data: \n");
+ for (i=0; i < 2*DIM0_1; i++) {
+ for (j=0; j < (int)vdsdims_out[1]; j++) {
+ printf ("(%d, %d, 0)", i, j);
+ for (k=0; k < (int)vdsdims_out[2]; k++)
+ printf (" %d ", a_rdata[i][j][k]);
+ printf ("\n");
+ }
+ }
+ /*
* Close and release resources.
*/
+ status = H5Sclose(mem_space);
status = H5Pclose (dcpl);
status = H5Dclose (vdset);
status = H5Fclose (vfile);