#include #include #include #include #include #define NX 1024 #define NY 2048 #define NTOT NX*NY #define NCX 1 #define NCY 4 typedef unsigned short data_type; //----------------------------------------------------------------------------- hid_t create_dataset(hid_t parent,const char *name,hid_t type_id,hid_t space_id,hsize_t *chunk) { //setup the creation property list for the dataset hid_t cplist = H5Pcreate(H5P_DATASET_CREATE); H5Pset_layout(cplist,H5D_CHUNKED); H5Pset_chunk(cplist,2,chunk); hid_t dset_id; if(chunk!=NULL) { fprintf(stdout,"Create dataset with chunks ...\n"); dset_id = H5Dcreate(parent,name,type_id,space_id,H5P_DEFAULT,cplist, H5P_DEFAULT); } else { fprintf(stdout,"Create dataset without chunks ...\n"); dset_id = H5Dcreate(parent,name,type_id,space_id,H5P_DEFAULT,H5P_DEFAULT, H5P_DEFAULT); } H5Pclose(cplist); return dset_id; } //----------------------------------------------------------------------------- void test(int gbcollect,int rewrite_first) { hsize_t shape[2] = {NX,NY}; //shape of the dataset hsize_t chunk[2] = {NCX,NCY}; //stupid chunk shape for the dataset //create a new file hid_t fid = H5Fcreate("test2.h5",H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT); //create type and data space hid_t type_id = H5Tcopy(H5T_NATIVE_USHORT); hid_t space_id = H5Screate_simple(2,shape,shape); hid_t dset_id = create_dataset(fid,"test",type_id,space_id,chunk); //generate data unsigned short *data = malloc(sizeof(data_type)*NTOT); for(size_t i=0;i