51{
52
53 H5::H5File h5file{_filepath, H5F_ACC_CREAT | H5F_ACC_RDWR};
54 auto root_grp = h5file.openGroup("/");
56 auto val_grp = h5file.openGroup(h5_value_grpname);
57
58 uint32_t num_run =
to_u32(val_grp.getNumObjs());
59 auto run_grp = val_grp.createGroup(("run_") + std::to_string(num_run));
60
61 auto model_grp =
ensureGroup(run_grp, std::string(
"model_") +
"0");
63 H5::DataSpace dspace(1, dims);
64 DataGen gen;
65
66 for (uint32_t i = 0; i < _md_spec.
n_inputs; ++i)
67 {
68 const auto subg_idx = 0;
69 auto subg_grp =
ensureGroup(model_grp, std::string(
"subg_") + std::to_string(subg_idx).c_str());
70 auto input_dset = subg_grp.createDataSet(std::string("input_") + std::to_string(i),
71 H5::PredType::IEEE_F32BE, dspace);
72 auto minmax = gen(num_run, i);
73 input_dset.write(gen(num_run, i).
data(), H5::PredType::NATIVE_FLOAT);
74 }
75
76 for (uint32_t op = 0; op < _md_spec.
n_ops; ++op)
77 {
78 const auto subg_idx = 0;
79 auto subg_grp =
ensureGroup(model_grp, std::string(
"subg_") + std::to_string(subg_idx).c_str());
80 auto op_dset = subg_grp.createDataSet(std::string("op_") + std::to_string(op),
81 H5::PredType::IEEE_F32BE, dspace);
82 op_dset.write(gen(num_run, op).
data(), H5::PredType::NATIVE_FLOAT);
83 }
84}
std::vector< int > dims(const std::string &src)
H5::Group ensureGroup(H5::Group parent, const std::string &child)
uint32_t to_u32(uint64_t v)