Closed jalopezg-git closed 1 year ago
I'm wondering if we are committed to run 3rd party benchmarks regularly in rootbench. Please let me know if I missed a discussion on this topic. Otherwise, I suggest to reopen the PR on the iotools repository.
Probably those would not run regularly. @Axel-Naumann suggested before ACAT that this might be the proper place to merge this; I believe he was not thinking of running these benchmarks regularly, but only to preserve this code in the long term. I don't have an strong opinion on that, though.
This pull request integrates into rootbench a header-only library to read/write simple HEP data in HDF5.
Having this at hand here would allow comparison benchmarks against HDF5 to be added in the future.
The library allows the storage of simple HEP data in HDF5, hiding away the details of data representation. Currently, it supports two different column models:
COMPOUND_TYPE
: that uses (possibly nested) compound types to represent data for each row.COLUMNAR_FNAL
: uses one HDF5 dataset per column of a primitive type. Collections are translated to a HDF5 group and an index column. For more information about this model, see the publication by Saba Sehrish et al. here.THIS CODE IS FOR BENCHMARK PURPOSES ONLY (ORIGINALLY FOR ACAT 2021); DO NOT USE IN PRODUCTION.
This is the state after ACAT 2021; however, in this or a follow-up PR we need to:
Example
The Makefile in the
examples/
directory generates two versions ofsimple_struct.cxx
:simple_struct_compound
andsimple_struct_fnal
. Both of them will generate the same output; however, the internal HDF5 representation is basically different, as shown below.For more complex examples, see gen_lhcb_h5.cc, gen_cms_h5.cc, lhcb_h5.cc, and cms_10br_h5.cc (not in this PR).