HDF5::File createMatlabFile (const FilenameType& filename) { FileCreatePropList cprop = FileCreatePropList::create (); //cprop.setUserblock (512); Exception::check ("H5Pset_userblock", H5Pset_userblock (cprop.handle (), 512)); HDF5::File file = HDF5::File::open (filename, H5F_ACC_RDWR | H5F_ACC_CREAT | H5F_ACC_TRUNC, cprop); char userblock[512]; memset (userblock, 0, 512); //snprintf (userblock, 124, "MAT"); userblock[0] = 'M'; userblock[1] = 'A'; userblock[2] = 'T'; userblock[124] = 0; userblock[125] = 2; userblock[126] = 'I'; userblock[127] = 'M'; #if OS_WIN /* int fd = file.getVFDHandleFD (); if (lseek (fd, 0, SEEK_SET) < 0) { perror ("lseek"); ABORT (); } if (write (fd, userblock, 512) < 0) { perror ("write"); ABORT (); } */ FILE* fileHandle = fopen (getString (filename).c_str (), "r+b"); if (!fileHandle) { perror ("fopen"); ABORT (); } if (fseek (fileHandle, 0, SEEK_SET) != 0) { perror ("fseek"); ABORT (); } if (fwrite (userblock, 1, 512, fileHandle) != 512) { perror ("fwrite"); ABORT (); } #else int fd = file.getVFDHandleFD (); if (pwrite (fd, userblock, 512, 0) != 512) { perror ("pwrite"); ABORT (); } #endif return file; }
static void gent_ub(const char * filename, size_t ub_size, size_t ub_fill) { hid_t fid, group, attr, dataset, space; hid_t create_plist; hsize_t dims[2]; int data[2][2], dset1[10][10], dset2[20]; char buf[BUF_SIZE]; int i, j; size_t u; float dset2_1[10], dset2_2[3][5]; int fd; char *bp; if(ub_size > 0) { create_plist = H5Pcreate(H5P_FILE_CREATE); H5Pset_userblock(create_plist, (hsize_t)ub_size); fid = H5Fcreate(filename, H5F_ACC_TRUNC, create_plist, H5P_DEFAULT); } else { fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); } /* create groups */ group = H5Gcreate2(fid, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); H5Gclose(group); group = H5Gcreate2(fid, "/g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); H5Gclose(group); group = H5Gcreate2(fid, "/g1/g1.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); H5Gclose(group); group = H5Gcreate2(fid, "/g1/g1.2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); H5Gclose(group); group = H5Gcreate2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); H5Gclose(group); /* root attributes */ group = H5Gopen2(fid, "/", H5P_DEFAULT); dims[0] = 10; space = H5Screate_simple(1, dims, NULL); attr = H5Acreate2(group, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); sprintf(buf, "abcdefghi"); H5Awrite(attr, H5T_NATIVE_SCHAR, buf); H5Sclose(space); H5Aclose(attr); dims[0] = 2; dims[1] = 2; space = H5Screate_simple(2, dims, NULL); attr = H5Acreate2(group, "attr2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT); data[0][0] = 0; data[0][1] = 1; data[1][0] = 2; data[1][1] = 3; H5Awrite(attr, H5T_NATIVE_INT, data); H5Sclose(space); H5Aclose(attr); H5Gclose(group); group = H5Gopen2(fid, "/g1/g1.1", H5P_DEFAULT); /* dset1.1.1 */ dims[0] = 10; dims[1] = 10; space = H5Screate_simple(2, dims, NULL); dataset = H5Dcreate2(group, "dset1.1.1", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) dset1[i][j] = j*i; H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset1); H5Sclose(space); /* attributes of dset1.1.1 */ dims[0] = 27; space = H5Screate_simple(1, dims, NULL); attr = H5Acreate2(dataset, "attr1", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); sprintf(buf, "1st attribute of dset1.1.1"); H5Awrite(attr, H5T_NATIVE_SCHAR, buf); H5Sclose(space); H5Aclose(attr); dims[0] = 27; space = H5Screate_simple(1, dims, NULL); attr = H5Acreate2(dataset, "attr2", H5T_STD_I8BE, space, H5P_DEFAULT, H5P_DEFAULT); sprintf(buf, "2nd attribute of dset1.1.1"); H5Awrite(attr, H5T_NATIVE_SCHAR, buf); H5Sclose(space); H5Aclose(attr); H5Dclose(dataset); /* dset1.1.2 */ dims[0] = 20; space = H5Screate_simple(1, dims, NULL); dataset = H5Dcreate2(group, "dset1.1.2", H5T_STD_I32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); for (i = 0; i < 20; i++) dset2[i] = i; H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2); H5Sclose(space); H5Dclose(dataset); H5Gclose(group); /* external link */ H5Lcreate_external("somefile", "somepath", fid, "/g1/g1.2/extlink", H5P_DEFAULT, H5P_DEFAULT); /* soft link */ group = H5Gopen2(fid, "/g1/g1.2/g1.2.1", H5P_DEFAULT); H5Lcreate_soft("somevalue", group, "slink", H5P_DEFAULT, H5P_DEFAULT); H5Gclose(group); group = H5Gopen2(fid, "/g2", H5P_DEFAULT); /* dset2.1 */ dims[0] = 10; space = H5Screate_simple(1, dims, NULL); dataset = H5Dcreate2(group, "dset2.1", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); for (i = 0; i < 10; i++) dset2_1[i] = (float)((float)i * 0.1F + 1.0F); H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_1); H5Sclose(space); H5Dclose(dataset); /* dset2.2 */ dims[0] = 3; dims[1] = 5; space = H5Screate_simple(2, dims, NULL); dataset = H5Dcreate2(group, "dset2.2", H5T_IEEE_F32BE, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); for (i = 0; i < 3; i++) for (j = 0; j < 5; j++) dset2_2[i][j] = (float)(((float)i + 1.0F) * (float)j * 0.1F); H5Dwrite(dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset2_2); H5Sclose(space); H5Dclose(dataset); H5Gclose(group); /* user-defined link */ H5Lregister(UD_link_class); H5Lcreate_ud(fid, "/g2/udlink", (H5L_type_t)MY_LINKCLASS, NULL, (size_t)0, H5P_DEFAULT, H5P_DEFAULT); H5Fclose(fid); /* If a user block is being used, write to it here */ if(ub_size > 0) { ssize_t nbytes; HDassert(ub_size <= BUF_SIZE); fd = HDopen(filename, O_RDWR); HDassert(fd >= 0); /* fill buf with pattern */ HDmemset(buf, '\0', ub_size); bp = buf; for (u = 0; u < ub_fill; u++) *bp++ = pattern[u % 10]; nbytes = HDwrite(fd, buf, ub_size); HDassert(nbytes >= 0); HDclose(fd); } }
int main(void) { hid_t dcpl1; /* dataset create prop. list */ hid_t dapl1; /* dataset access prop. list */ hid_t dxpl1; /* dataset xfer prop. list */ hid_t gcpl1; /* group create prop. list */ hid_t ocpypl1; /* object copy prop. list */ hid_t ocpl1; /* object create prop. list */ hid_t lcpl1; /* link create prop. list */ hid_t lapl1; /* link access prop. list */ hid_t fapl1; /* file access prop. list */ hid_t fcpl1; /* file create prop. list */ hid_t strcpl1; /* string create prop. list */ hid_t acpl1; /* attribute create prop. list */ herr_t ret = 0; hsize_t chunk_size = 16384; /* chunk size */ int fill = 2; /* Fill value */ hsize_t max_size[1]; /* data space maximum size */ size_t nslots = 521 * 2; size_t nbytes = 1048576 * 10; double w0 = 0.5f; unsigned max_compact; unsigned min_dense; const char* c_to_f = "x+32"; int little_endian; int word_length; H5AC_cache_config_t my_cache_config = { H5AC__CURR_CACHE_CONFIG_VERSION, 1 /*TRUE*/, 0 /*FALSE*/, 0 /*FALSE*/, "temp", 1 /*TRUE*/, 0 /*FALSE*/, ( 2 * 2048 * 1024), 0.3f, (64 * 1024 * 1024), (4 * 1024 * 1024), 60000, H5C_incr__threshold, 0.8f, 3.0f, 1 /*TRUE*/, (8 * 1024 * 1024), H5C_flash_incr__add_space, 2.0f, 0.25f, H5C_decr__age_out_with_threshold, 0.997f, 0.8f, 1 /*TRUE*/, (3 * 1024 * 1024), 3, 0 /*FALSE*/, 0.2f, (256 * 2048), H5AC_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY}; H5AC_cache_image_config_t my_cache_image_config = { H5AC__CURR_CACHE_IMAGE_CONFIG_VERSION, TRUE, FALSE, -1}; /* check endianess */ { short int word = 0x0001; char *byte = (char *) &word; if(byte[0] == 1) /* little endian */ little_endian = 1; else /* big endian */ little_endian = 0; } /* check word length */ { word_length = 8 * sizeof(void *); } /* Explicitly initialize the library, since we are including the private header file */ H5open(); /******* ENCODE/DECODE DCPLS *****/ if((dcpl1 = H5Pcreate(H5P_DATASET_CREATE)) < 0) assert(dcpl1 > 0); if((ret = encode_plist(dcpl1, little_endian, word_length, "testfiles/plist_files/def_dcpl_")) < 0) assert(ret > 0); if((ret = H5Pset_chunk(dcpl1, 1, &chunk_size)) < 0) assert(ret > 0); if((ret = H5Pset_alloc_time(dcpl1, H5D_ALLOC_TIME_LATE)) < 0) assert(ret > 0); ret = H5Tconvert(H5T_NATIVE_INT, H5T_STD_I32BE, (size_t)1, &fill, NULL, H5P_DEFAULT); assert(ret >= 0); if((ret = H5Pset_fill_value(dcpl1, H5T_STD_I32BE, &fill)) < 0) assert(ret > 0); max_size[0] = 100; if((ret = H5Pset_external(dcpl1, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int)/4))) < 0) assert(ret > 0); if((ret = H5Pset_external(dcpl1, "ext2.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int)/4))) < 0) assert(ret > 0); if((ret = H5Pset_external(dcpl1, "ext3.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int)/4))) < 0) assert(ret > 0); if((ret = H5Pset_external(dcpl1, "ext4.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int)/4))) < 0) assert(ret > 0); if((ret = encode_plist(dcpl1, little_endian, word_length, "testfiles/plist_files/dcpl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(dcpl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE DAPLS *****/ if((dapl1 = H5Pcreate(H5P_DATASET_ACCESS)) < 0) assert(dapl1 > 0); if((ret = encode_plist(dapl1, little_endian, word_length, "testfiles/plist_files/def_dapl_")) < 0) assert(ret > 0); if((ret = H5Pset_chunk_cache(dapl1, nslots, nbytes, w0)) < 0) assert(ret > 0); if((ret = encode_plist(dapl1, little_endian, word_length, "testfiles/plist_files/dapl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(dapl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE DXPLS *****/ if((dxpl1 = H5Pcreate(H5P_DATASET_XFER)) < 0) assert(dxpl1 > 0); if((ret = encode_plist(dxpl1, little_endian, word_length, "testfiles/plist_files/def_dxpl_")) < 0) assert(ret > 0); if((ret = H5Pset_btree_ratios(dxpl1, 0.2f, 0.6f, 0.2f)) < 0) assert(ret > 0); if((ret = H5Pset_hyper_vector_size(dxpl1, 5)) < 0) assert(ret > 0); #ifdef H5_HAVE_PARALLEL if((ret = H5Pset_dxpl_mpio(dxpl1, H5FD_MPIO_COLLECTIVE)) < 0) assert(ret > 0); if((ret = H5Pset_dxpl_mpio_collective_opt(dxpl1, H5FD_MPIO_INDIVIDUAL_IO)) < 0) assert(ret > 0); if((ret = H5Pset_dxpl_mpio_chunk_opt(dxpl1, H5FD_MPIO_CHUNK_MULTI_IO)) < 0) assert(ret > 0); if((ret = H5Pset_dxpl_mpio_chunk_opt_ratio(dxpl1, 30)) < 0) assert(ret > 0); if((ret = H5Pset_dxpl_mpio_chunk_opt_num(dxpl1, 40)) < 0) assert(ret > 0); #endif/* H5_HAVE_PARALLEL */ if((ret = H5Pset_edc_check(dxpl1, H5Z_DISABLE_EDC)) < 0) assert(ret > 0); if((ret = H5Pset_data_transform(dxpl1, c_to_f)) < 0) assert(ret > 0); if((ret = encode_plist(dxpl1, little_endian, word_length, "testfiles/plist_files/dxpl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(dxpl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE GCPLS *****/ if((gcpl1 = H5Pcreate(H5P_GROUP_CREATE)) < 0) assert(gcpl1 > 0); if((ret = encode_plist(gcpl1, little_endian, word_length, "testfiles/plist_files/def_gcpl_")) < 0) assert(ret > 0); if((ret = H5Pset_local_heap_size_hint(gcpl1, 256)) < 0) assert(ret > 0); if((ret = H5Pset_link_phase_change(gcpl1, 2, 2)) < 0) assert(ret > 0); /* Query the group creation properties */ if((ret = H5Pget_link_phase_change(gcpl1, &max_compact, &min_dense)) < 0) assert(ret > 0); if((ret = H5Pset_est_link_info(gcpl1, 3, 9)) < 0) assert(ret > 0); if((ret = H5Pset_link_creation_order(gcpl1, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED))) < 0) assert(ret > 0); if((ret = encode_plist(gcpl1, little_endian, word_length, "testfiles/plist_files/gcpl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(gcpl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE LCPLS *****/ if((lcpl1 = H5Pcreate(H5P_LINK_CREATE)) < 0) assert(lcpl1 > 0); if((ret = encode_plist(lcpl1, little_endian, word_length, "testfiles/plist_files/def_lcpl_")) < 0) assert(ret > 0); if((ret = H5Pset_create_intermediate_group(lcpl1, 1 /*TRUE*/)) < 0) assert(ret > 0); if((ret = encode_plist(lcpl1, little_endian, word_length, "testfiles/plist_files/lcpl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(lcpl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE OCPYLS *****/ if((ocpypl1 = H5Pcreate(H5P_OBJECT_COPY)) < 0) assert(ocpypl1 > 0); if((ret = encode_plist(ocpypl1, little_endian, word_length, "testfiles/plist_files/def_ocpypl_")) < 0) assert(ret > 0); ret = H5Pset_copy_object(ocpypl1, H5O_COPY_EXPAND_EXT_LINK_FLAG); assert(ret >= 0); ret = H5Padd_merge_committed_dtype_path(ocpypl1, "foo"); assert(ret >= 0); ret = H5Padd_merge_committed_dtype_path(ocpypl1, "bar"); assert(ret >= 0); if((ret = encode_plist(ocpypl1, little_endian, word_length, "testfiles/plist_files/ocpypl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(ocpypl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE OCPLS *****/ if((ocpl1 = H5Pcreate(H5P_OBJECT_CREATE)) < 0) assert(ocpl1 > 0); if((ret = encode_plist(ocpl1, little_endian, word_length, "testfiles/plist_files/def_ocpl_")) < 0) assert(ret > 0); if((ret = H5Pset_attr_creation_order(ocpl1, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED))) < 0) assert(ret > 0); if((ret = H5Pset_attr_phase_change (ocpl1, 110, 105)) < 0) assert(ret > 0); if((ret = H5Pset_filter (ocpl1, H5Z_FILTER_FLETCHER32, 0, (size_t)0, NULL)) < 0) assert(ret > 0); if((ret = encode_plist(ocpl1, little_endian, word_length, "testfiles/plist_files/ocpl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(ocpl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE LAPLS *****/ if((lapl1 = H5Pcreate(H5P_LINK_ACCESS)) < 0) assert(lapl1 > 0); if((ret = encode_plist(lapl1, little_endian, word_length, "testfiles/plist_files/def_lapl_")) < 0) assert(ret > 0); if((ret = H5Pset_nlinks(lapl1, (size_t)134)) < 0) assert(ret > 0); if((ret = H5Pset_elink_acc_flags(lapl1, H5F_ACC_RDONLY)) < 0) assert(ret > 0); if((ret = H5Pset_elink_prefix(lapl1, "/tmpasodiasod")) < 0) assert(ret > 0); /* Create FAPL for the elink FAPL */ if((fapl1 = H5Pcreate(H5P_FILE_ACCESS)) < 0) assert(fapl1 > 0); if((ret = H5Pset_alignment(fapl1, 2, 1024)) < 0) assert(ret > 0); if((ret = H5Pset_elink_fapl(lapl1, fapl1)) < 0) assert(ret > 0); /* Close the elink's FAPL */ if((ret = H5Pclose(fapl1)) < 0) assert(ret > 0); if((ret = encode_plist(lapl1, little_endian, word_length, "testfiles/plist_files/lapl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(lapl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE FAPLS *****/ if((fapl1 = H5Pcreate(H5P_FILE_ACCESS)) < 0) assert(fapl1 > 0); if((ret = encode_plist(fapl1, little_endian, word_length, "testfiles/plist_files/def_fapl_")) < 0) assert(ret > 0); if((ret = H5Pset_family_offset(fapl1, 1024)) < 0) assert(ret > 0); if((ret = H5Pset_meta_block_size(fapl1, 2098452)) < 0) assert(ret > 0); if((ret = H5Pset_sieve_buf_size(fapl1, 1048576)) < 0) assert(ret > 0); if((ret = H5Pset_alignment(fapl1, 2, 1024)) < 0) assert(ret > 0); if((ret = H5Pset_cache(fapl1, 1024, 128, 10485760, 0.3f)) < 0) assert(ret > 0); if((ret = H5Pset_elink_file_cache_size(fapl1, 10485760)) < 0) assert(ret > 0); if((ret = H5Pset_gc_references(fapl1, 1)) < 0) assert(ret > 0); if((ret = H5Pset_small_data_block_size(fapl1, 2048)) < 0) assert(ret > 0); if((ret = H5Pset_libver_bounds(fapl1, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST)) < 0) assert(ret > 0); if((ret = H5Pset_fclose_degree(fapl1, H5F_CLOSE_WEAK)) < 0) assert(ret > 0); if((ret = H5Pset_multi_type(fapl1, H5FD_MEM_GHEAP)) < 0) assert(ret > 0); if((ret = H5Pset_mdc_config(fapl1, &my_cache_config)) < 0) assert(ret > 0); if((ret = H5Pset_mdc_image_config(fapl1, &my_cache_image_config)) < 0) assert(ret > 0); if((ret = H5Pset_core_write_tracking(fapl1, TRUE, (size_t)(1024 * 1024))) < 0) assert(ret > 0); if((ret = encode_plist(fapl1, little_endian, word_length, "testfiles/plist_files/fapl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(fapl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE FCPLS *****/ if((fcpl1 = H5Pcreate(H5P_FILE_CREATE)) < 0) assert(fcpl1 > 0); if((ret = encode_plist(fcpl1, little_endian, word_length, "testfiles/plist_files/def_fcpl_")) < 0) assert(ret > 0); if((ret = H5Pset_userblock(fcpl1, 1024) < 0)) assert(ret > 0); if((ret = H5Pset_istore_k(fcpl1, 3) < 0)) assert(ret > 0); if((ret = H5Pset_sym_k(fcpl1, 4, 5) < 0)) assert(ret > 0); if((ret = H5Pset_shared_mesg_nindexes(fcpl1, 8) < 0)) assert(ret > 0); if((ret = H5Pset_shared_mesg_index(fcpl1, 1, H5O_SHMESG_SDSPACE_FLAG, 32) < 0)) assert(ret > 0); if((ret = H5Pset_shared_mesg_phase_change(fcpl1, 60, 20) < 0)) assert(ret > 0); if((ret = H5Pset_sizes(fcpl1, 8, 4) < 0)) assert(ret > 0); if((ret = H5Pset_file_space_strategy(fcpl1, H5F_FSPACE_STRATEGY_PAGE, TRUE, (hsize_t)1)) < 0) assert(ret > 0); if((ret = H5Pset_file_space_page_size(fcpl1, (hsize_t)4096)) < 0) assert(ret > 0); if((ret = encode_plist(fcpl1, little_endian, word_length, "testfiles/plist_files/fcpl_")) < 0) assert(ret > 0); /* release resource */ if((ret = H5Pclose(fcpl1)) < 0) assert(ret > 0); /******* ENCODE/DECODE STRCPLS *****/ strcpl1 = H5Pcreate(H5P_STRING_CREATE); assert(strcpl1 > 0); ret = encode_plist(strcpl1, little_endian, word_length, "testfiles/plist_files/def_strcpl_"); assert(ret > 0); ret = H5Pset_char_encoding(strcpl1, H5T_CSET_UTF8); assert(ret >= 0); ret = encode_plist(strcpl1, little_endian, word_length, "testfiles/plist_files/strcpl_"); assert(ret > 0); /* release resource */ ret = H5Pclose(strcpl1); assert(ret >= 0); /******* ENCODE/DECODE ACPLS *****/ acpl1 = H5Pcreate(H5P_ATTRIBUTE_CREATE); assert(acpl1 > 0); ret = encode_plist(acpl1, little_endian, word_length, "testfiles/plist_files/def_acpl_"); assert(ret > 0); ret = H5Pset_char_encoding(acpl1, H5T_CSET_UTF8); assert(ret >= 0); ret = encode_plist(acpl1, little_endian, word_length, "testfiles/plist_files/acpl_"); assert(ret > 0); /* release resource */ ret = H5Pclose(acpl1); assert(ret >= 0); return 0; }
void test_plist_ed(void) { hid_t dcpl; /* dataset create prop. list */ hid_t dapl; /* dataset access prop. list */ hid_t dxpl; /* dataset transfer prop. list */ hid_t gcpl; /* group create prop. list */ hid_t lcpl; /* link create prop. list */ hid_t lapl; /* link access prop. list */ hid_t ocpypl; /* object copy prop. list */ hid_t ocpl; /* object create prop. list */ hid_t fapl; /* file access prop. list */ hid_t fcpl; /* file create prop. list */ hid_t strcpl; /* string create prop. list */ hid_t acpl; /* attribute create prop. list */ int mpi_size, mpi_rank, recv_proc; hsize_t chunk_size = 16384; /* chunk size */ double fill = 2.7f; /* Fill value */ size_t nslots = 521*2; size_t nbytes = 1048576 * 10; double w0 = 0.5f; unsigned max_compact; unsigned min_dense; hsize_t max_size[1]; /*data space maximum size */ const char* c_to_f = "x+32"; H5AC_cache_config_t my_cache_config = { H5AC__CURR_CACHE_CONFIG_VERSION, TRUE, FALSE, FALSE, "temp", TRUE, FALSE, ( 2 * 2048 * 1024), 0.3f, (64 * 1024 * 1024), (4 * 1024 * 1024), 60000, H5C_incr__threshold, 0.8f, 3.0f, TRUE, (8 * 1024 * 1024), H5C_flash_incr__add_space, 2.0f, 0.25f, H5C_decr__age_out_with_threshold, 0.997f, 0.8f, TRUE, (3 * 1024 * 1024), 3, FALSE, 0.2f, (256 * 2048), H5AC__DEFAULT_METADATA_WRITE_STRATEGY}; herr_t ret; /* Generic return value */ if(VERBOSE_MED) printf("Encode/Decode DCPLs\n"); /* set up MPI parameters */ MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank); if(mpi_size == 1) recv_proc = 0; else recv_proc = 1; dcpl = H5Pcreate(H5P_DATASET_CREATE); VRFY((dcpl >= 0), "H5Pcreate succeeded"); ret = H5Pset_chunk(dcpl, 1, &chunk_size); VRFY((ret >= 0), "H5Pset_chunk succeeded"); ret = H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_LATE); VRFY((ret >= 0), "H5Pset_alloc_time succeeded"); ret = H5Pset_fill_value(dcpl, H5T_NATIVE_DOUBLE, &fill); VRFY((ret>=0), "set fill-value succeeded"); max_size[0] = 100; ret = H5Pset_external(dcpl, "ext1.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int)/4)); VRFY((ret>=0), "set external succeeded"); ret = H5Pset_external(dcpl, "ext2.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int)/4)); VRFY((ret>=0), "set external succeeded"); ret = H5Pset_external(dcpl, "ext3.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int)/4)); VRFY((ret>=0), "set external succeeded"); ret = H5Pset_external(dcpl, "ext4.data", (off_t)0, (hsize_t)(max_size[0] * sizeof(int)/4)); VRFY((ret>=0), "set external succeeded"); ret = test_encode_decode(dcpl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(dcpl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE DAPLS *****/ dapl = H5Pcreate(H5P_DATASET_ACCESS); VRFY((dapl >= 0), "H5Pcreate succeeded"); ret = H5Pset_chunk_cache(dapl, nslots, nbytes, w0); VRFY((ret >= 0), "H5Pset_chunk_cache succeeded"); ret = test_encode_decode(dapl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(dapl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE OCPLS *****/ ocpl = H5Pcreate(H5P_OBJECT_CREATE); VRFY((ocpl >= 0), "H5Pcreate succeeded"); ret = H5Pset_attr_creation_order(ocpl, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED)); VRFY((ret >= 0), "H5Pset_attr_creation_order succeeded"); ret = H5Pset_attr_phase_change(ocpl, 110, 105); VRFY((ret >= 0), "H5Pset_attr_phase_change succeeded"); ret = H5Pset_filter(ocpl, H5Z_FILTER_FLETCHER32, 0, (size_t)0, NULL); VRFY((ret >= 0), "H5Pset_filter succeeded"); ret = test_encode_decode(ocpl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(ocpl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE DXPLS *****/ dxpl = H5Pcreate(H5P_DATASET_XFER); VRFY((dxpl >= 0), "H5Pcreate succeeded"); ret = H5Pset_btree_ratios(dxpl, 0.2f, 0.6f, 0.2f); VRFY((ret >= 0), "H5Pset_btree_ratios succeeded"); ret = H5Pset_hyper_vector_size(dxpl, 5); VRFY((ret >= 0), "H5Pset_hyper_vector_size succeeded"); ret = H5Pset_dxpl_mpio(dxpl, H5FD_MPIO_COLLECTIVE); VRFY((ret >= 0), "H5Pset_dxpl_mpio succeeded"); ret = H5Pset_dxpl_mpio_collective_opt(dxpl, H5FD_MPIO_INDIVIDUAL_IO); VRFY((ret >= 0), "H5Pset_dxpl_mpio_collective_opt succeeded"); ret = H5Pset_dxpl_mpio_chunk_opt(dxpl, H5FD_MPIO_CHUNK_MULTI_IO); VRFY((ret >= 0), "H5Pset_dxpl_mpio_chunk_opt succeeded"); ret = H5Pset_dxpl_mpio_chunk_opt_ratio(dxpl, 30); VRFY((ret >= 0), "H5Pset_dxpl_mpio_chunk_opt_ratio succeeded"); ret = H5Pset_dxpl_mpio_chunk_opt_num(dxpl, 40); VRFY((ret >= 0), "H5Pset_dxpl_mpio_chunk_opt_num succeeded"); ret = H5Pset_edc_check(dxpl, H5Z_DISABLE_EDC); VRFY((ret >= 0), "H5Pset_edc_check succeeded"); ret = H5Pset_data_transform(dxpl, c_to_f); VRFY((ret >= 0), "H5Pset_data_transform succeeded"); ret = test_encode_decode(dxpl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(dxpl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE GCPLS *****/ gcpl = H5Pcreate(H5P_GROUP_CREATE); VRFY((gcpl >= 0), "H5Pcreate succeeded"); ret = H5Pset_local_heap_size_hint(gcpl, 256); VRFY((ret >= 0), "H5Pset_local_heap_size_hint succeeded"); ret = H5Pset_link_phase_change(gcpl, 2, 2); VRFY((ret >= 0), "H5Pset_link_phase_change succeeded"); /* Query the group creation properties */ ret = H5Pget_link_phase_change(gcpl, &max_compact, &min_dense); VRFY((ret >= 0), "H5Pget_est_link_info succeeded"); ret = H5Pset_est_link_info(gcpl, 3, 9); VRFY((ret >= 0), "H5Pset_est_link_info succeeded"); ret = H5Pset_link_creation_order(gcpl, (H5P_CRT_ORDER_TRACKED | H5P_CRT_ORDER_INDEXED)); VRFY((ret >= 0), "H5Pset_link_creation_order succeeded"); ret = test_encode_decode(gcpl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(gcpl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE LCPLS *****/ lcpl = H5Pcreate(H5P_LINK_CREATE); VRFY((lcpl >= 0), "H5Pcreate succeeded"); ret= H5Pset_create_intermediate_group(lcpl, TRUE); VRFY((ret >= 0), "H5Pset_create_intermediate_group succeeded"); ret = test_encode_decode(lcpl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(lcpl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE LAPLS *****/ lapl = H5Pcreate(H5P_LINK_ACCESS); VRFY((lapl >= 0), "H5Pcreate succeeded"); ret = H5Pset_nlinks(lapl, (size_t)134); VRFY((ret >= 0), "H5Pset_nlinks succeeded"); ret = H5Pset_elink_acc_flags(lapl, H5F_ACC_RDONLY); VRFY((ret >= 0), "H5Pset_elink_acc_flags succeeded"); ret = H5Pset_elink_prefix(lapl, "/tmpasodiasod"); VRFY((ret >= 0), "H5Pset_nlinks succeeded"); /* Create FAPL for the elink FAPL */ fapl = H5Pcreate(H5P_FILE_ACCESS); VRFY((fapl >= 0), "H5Pcreate succeeded"); ret = H5Pset_alignment(fapl, 2, 1024); VRFY((ret >= 0), "H5Pset_alignment succeeded"); ret = H5Pset_elink_fapl(lapl, fapl); VRFY((ret >= 0), "H5Pset_elink_fapl succeeded"); /* Close the elink's FAPL */ ret = H5Pclose(fapl); VRFY((ret >= 0), "H5Pclose succeeded"); ret = test_encode_decode(lapl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(lapl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE OCPYPLS *****/ ocpypl = H5Pcreate(H5P_OBJECT_COPY); VRFY((ocpypl >= 0), "H5Pcreate succeeded"); ret = H5Pset_copy_object(ocpypl, H5O_COPY_EXPAND_EXT_LINK_FLAG); VRFY((ret >= 0), "H5Pset_copy_object succeeded"); ret = H5Padd_merge_committed_dtype_path(ocpypl, "foo"); VRFY((ret >= 0), "H5Padd_merge_committed_dtype_path succeeded"); ret = H5Padd_merge_committed_dtype_path(ocpypl, "bar"); VRFY((ret >= 0), "H5Padd_merge_committed_dtype_path succeeded"); ret = test_encode_decode(ocpypl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(ocpypl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE FAPLS *****/ fapl = H5Pcreate(H5P_FILE_ACCESS); VRFY((fapl >= 0), "H5Pcreate succeeded"); ret = H5Pset_family_offset(fapl, 1024); VRFY((ret >= 0), "H5Pset_family_offset succeeded"); ret = H5Pset_meta_block_size(fapl, 2098452); VRFY((ret >= 0), "H5Pset_meta_block_size succeeded"); ret = H5Pset_sieve_buf_size(fapl, 1048576); VRFY((ret >= 0), "H5Pset_sieve_buf_size succeeded"); ret = H5Pset_alignment(fapl, 2, 1024); VRFY((ret >= 0), "H5Pset_alignment succeeded"); ret = H5Pset_cache(fapl, 1024, 128, 10485760, 0.3f); VRFY((ret >= 0), "H5Pset_cache succeeded"); ret = H5Pset_elink_file_cache_size(fapl, 10485760); VRFY((ret >= 0), "H5Pset_elink_file_cache_size succeeded"); ret = H5Pset_gc_references(fapl, 1); VRFY((ret >= 0), "H5Pset_gc_references succeeded"); ret = H5Pset_small_data_block_size(fapl, 2048); VRFY((ret >= 0), "H5Pset_small_data_block_size succeeded"); ret = H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST); VRFY((ret >= 0), "H5Pset_libver_bounds succeeded"); ret = H5Pset_fclose_degree(fapl, H5F_CLOSE_WEAK); VRFY((ret >= 0), "H5Pset_fclose_degree succeeded"); ret = H5Pset_multi_type(fapl, H5FD_MEM_GHEAP); VRFY((ret >= 0), "H5Pset_multi_type succeeded"); ret = H5Pset_mdc_config(fapl, &my_cache_config); VRFY((ret >= 0), "H5Pset_mdc_config succeeded"); ret = test_encode_decode(fapl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(fapl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE FCPLS *****/ fcpl = H5Pcreate(H5P_FILE_CREATE); VRFY((fcpl >= 0), "H5Pcreate succeeded"); ret = H5Pset_userblock(fcpl, 1024); VRFY((ret >= 0), "H5Pset_userblock succeeded"); ret = H5Pset_istore_k(fcpl, 3); VRFY((ret >= 0), "H5Pset_istore_k succeeded"); ret = H5Pset_sym_k(fcpl, 4, 5); VRFY((ret >= 0), "H5Pset_sym_k succeeded"); ret = H5Pset_shared_mesg_nindexes(fcpl, 8); VRFY((ret >= 0), "H5Pset_shared_mesg_nindexes succeeded"); ret = H5Pset_shared_mesg_index(fcpl, 1, H5O_SHMESG_SDSPACE_FLAG, 32); VRFY((ret >= 0), "H5Pset_shared_mesg_index succeeded"); ret = H5Pset_shared_mesg_phase_change(fcpl, 60, 20); VRFY((ret >= 0), "H5Pset_shared_mesg_phase_change succeeded"); ret = H5Pset_sizes(fcpl, 8, 4); VRFY((ret >= 0), "H5Pset_sizes succeeded"); ret = test_encode_decode(fcpl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(fcpl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE STRCPLS *****/ strcpl = H5Pcreate(H5P_STRING_CREATE); VRFY((strcpl >= 0), "H5Pcreate succeeded"); ret = H5Pset_char_encoding(strcpl, H5T_CSET_UTF8); VRFY((ret >= 0), "H5Pset_char_encoding succeeded"); ret = test_encode_decode(strcpl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(strcpl); VRFY((ret >= 0), "H5Pclose succeeded"); /******* ENCODE/DECODE ACPLS *****/ acpl = H5Pcreate(H5P_ATTRIBUTE_CREATE); VRFY((acpl >= 0), "H5Pcreate succeeded"); ret = H5Pset_char_encoding(acpl, H5T_CSET_UTF8); VRFY((ret >= 0), "H5Pset_char_encoding succeeded"); ret = test_encode_decode(acpl, mpi_rank, recv_proc); VRFY((ret >= 0), "test_encode_decode succeeded"); ret = H5Pclose(acpl); VRFY((ret >= 0), "H5Pclose succeeded"); }