/* ICtest1s */ #include #include #include #include "hdf5.h" #define FILE_NAME "t1.dat" #define NX 64 /* dataset dimensions */ #define NY 64 #define nImages 200000 #define RANK 2 /****************************************************************************************/ /****************************************************************************************/ int main (void) { /***************************************/ hid_t file, dataset, ICgrp, grp; /* file and dataset handles */ hid_t datatype; hid_t dataspace; /* handles */ hid_t fapl; /* File access property list */ hsize_t dimsf[2]; /* dataset dimensions */ herr_t status; int data[1024][1024]; /* data to write */ int i, j; char imageName[10]; char groupName[10]; time_t t0,t1,td; /* FILE *fp=NULL; */ int pCount,s; dimsf[0] = 32; dimsf[1] = 32; /***************************************/ for (j = 0; j < 1024; j++) { for (i = 0; i < 1024; i++) { data[j][i] = rand(); } } /***************************************/ /* File access property list */ fapl = H5Pcreate(H5P_FILE_ACCESS); /* Use the latest version of the format */ H5Pset_latest_format(fapl, 1); for (s=0; s<3;s++) { dimsf[0]=dimsf[1]=dimsf[0]*2; printf("approximate MB=%10.1f\n",(float)(dimsf[0]*dimsf[1])*(float)sizeof(int)*(float)nImages/(1024 * 1024)); time(&t0); time(&td); pCount=0; file = H5Fcreate(FILE_NAME, H5F_ACC_TRUNC, H5P_DEFAULT, fapl); ICgrp = H5Gcreate(file, "/imageCore", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); dataspace = H5Screate_simple(RANK, dimsf, NULL); datatype = H5Tcopy(H5T_NATIVE_INT); status = H5Tset_order(datatype, H5T_ORDER_LE); for (j = 1; j < nImages; j++) { sprintf(imageName,"%d",j); dataset = H5Dcreate(ICgrp, imageName, datatype, dataspace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); status = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data); sprintf(groupName,"%d*",j); grp = H5Gcreate(ICgrp, groupName, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); H5Gclose(grp); H5Dclose(dataset); pCount++; if(pCount==10000) { pCount=0; time(&t1); printf("%5d ",(int)dimsf[0]); printf("%6d ",j); printf("%10.1f ",difftime(t1,t0)); printf("%5.1f\n",difftime(t1,td)); td=t1; } } time(&t1); printf("%5d ",(int)dimsf[0]); printf("%6d ",j); printf("%10.1f ",difftime(t1,t0)); printf("%5.1f\n",difftime(t1,td)); H5Tclose(datatype); H5Sclose(dataspace); H5Gclose(ICgrp); H5Fclose(file); } H5Pclose(fapl); /************************************ fp=fopen(FILE_NAME,"w"); for (j = 1; j < nImages; j++)fwrite(&data, sizeof(int), NX*NY, fp); fclose(fp); time(&t2); printf("fopen time=%10.1f\n",difftime(t2,t1)); ***/ return 0; }