Present: Jakob, Enrico, Javi, Stefan, Guilherme, Danilo, Brian, Zhe, Philippe, Viktor, Axel, Muhammad Alhroob
We will merge the BulkIO in ROOT offering the functionality from within the Experimental namespace without waiting the RDF integration to be finished. Nevertheless, we stressed that it is required that this necessary to offer this latter functionality because it was not clear how users could take advantage of BulkIO w/o a dedicated RDataSource.
- Measure the rate of measuring reading time not only of a column of ints but a column of arrays of ints
Enrico asks where exactly the reuntime improvement comes from:
- With TTree::GetEntry there are for every entry a few (virtual) calls, i.e. checking preconditions.
- The number of passes in memory: 1 to read from disk, 1 pass to decompress, deserialisation is 1 pass in memory. Bulk-Io allows to skip a memcopy with respect to the current system.
Overhead in Test#2: we believe that this comes from
- The SetEntry function call which is not inlined
- Loop on the branches wich are known at runtime
Test#3: this raises a lot of interest!
- Suggestion1: help the compiler devirtualising initialising the unique_ptr within the RDF constructor
- Idea: Add some kind of instrumentation to just measure the event loop time
- Idea: Can we read a bulk and "move it up" to the column values to then sweep over those w/o going back to the IO layer?
We have the feeling that this is good work, with potential. This needs a bit more effort to understand the performance numbers. The objective is to try an upgraded version of this code to run tutorials rf102 and rf103, the examples running over CMS 2011 Open Data, reformatted in NanoAOD format.