Repository navigation
Prepare for reading variation bitmask values in a bulk - #23891
Draft
vepadulano wants to merge 10 commits into
Draft
vepadulano wants to merge 10 commits into
vepadulano wants to merge 10 commits into
Conversation
Sets the stage for future bulk reading where the actual values that need to be passed to downstream nodes may need to get stored in a separate location.
Nodes of the computation graph which may operate a selection on which entries are valid or not are modified to accommodate for multiple entries being evaluated at the same time. For now, the size of the bulk is set to one. Note that this commit does not touch in any way the reading of data.
The RLoopManager decides the current bulk size that all nodes of the computation graph must adhere to. Currently this is set to one, in the future it may vary.
define and variation nodes update their current available values via an Update method, this is now prepared to work in bulks, currently assuming always size one.
Enables reading TTree data via TTreeReaderValue into a pre-allocated memory region that will eventually contain the bulk of entries, assuming for now a bulk size of one. The changes are backwards compatible, all tests work with the new bulk loading logic, with one exception and a minor remark. The remark is that the test_ctors is modified since now the construction and destruction of class instances happens at the boundary of a bulk. Before, TTree could optimize by IO-constructing the value once and then re-assign it across entries. The exception is the test called PolymorphicTBranchObject in dataframe_regressions.cxx, which reads a TTree branch of on-disk type TObject where at each entry the concrete type of the value is different (namely a TList in the first entry and a TH1D in the second entry). In particular, this is a TBranchObject with split level zero. The approach taken is to disable the bulk loading from RDataFrame in this case and only allow reading one entry at a time for this type of branch. Co-authored-by: Philippe Canal <pcanal@fnal.gov>
A cache of values of the bulk is created at construction time of RTreeUntypedArrayColumnReader, since TTree requires stable addresses in memory to read branch values from. At loading time, the values are read into the corresponding location of the cache for the current bulk entry index. Currently, this assumes always a bulk size of one.
Create a cache of entry values at construction time of RTreeOpaqueColumnReader, with the size of the bulk currently assumed to be one. Values are read as 'void *' and cached, no further special loading logic required.
Adapts RMaskedColumnReader to work with a bulk of entries, currently assumed to be of size one.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Needs #22313 #22461 #22472 #22479 #22494 #23888 #23889 #23890
Prepare to read varied values with a bitmask from a TTree in a bulk
Par 8 of N of the dataframe bulk processing effort.