-
Notifications
You must be signed in to change notification settings - Fork 443
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TPC: Adding streamer for FastTransform in reconstruction #10739
Conversation
SpaceCharge: adding option to use analytical formula for corrections and distortions - adding simple default analytical distortions/corrections - add streamer in digitizer DebugStreamer: Allow writing out streams in parallel
What is sizeof(o2::utils::DebugStreamer)?
Is it guaranteed to be the same on CPU and GPU?
Otherwise it will break GPU reconstruction.
|
The class is only defined when DEBUG_STREAMER was set during compiling o2. If it was not specified then the class should be always empty and the same size for CPU and GPU. |
Ok, thx. Then it should be fine.
However, I propose we add a check at the initialization of the GPUReconstruction class when the DEBUG STREAMER define is set, and if so we throw a fatal if the backend is not CPU, to avoid confusing crashes if accidentally they are used together.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@matthias-kleiner , thanks for the implementation!
Concerning the streamers, could you please also add then here:
https://github.com/AliceO2Group/AliceO2/blob/dev/GPU/TPCFastTransformation/TPCFastTransform.h#L657
https://github.com/AliceO2Group/AliceO2/blob/dev/GPU/TPCFastTransformation/TPCFastTransform.h#L668
These functions are also called in reconstruction. @davidrohr are there others needed?
This would be good. Can you implement this? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@matthias-kleiner did you check if the streaming to trees (even different ones) works in multithreaded code? The root I/O is in general not thread safe, see e.g. https://root-forum.cern.ch/t/root-i-o-and-thread-safety/5857
Sure, will take care
…On 9 February 2023 13:22:37 CET, Matthias Kleiner ***@***.***> wrote:
> Ok, thx. Then it should be fine. However, I propose we add a check at the initialization of the GPUReconstruction class when the DEBUG STREAMER define is set, and if so we throw a fatal if the backend is not CPU, to avoid confusing crashes if accidentally they are used together.
This would be good. Can you implement this?
|
Yes I checked this and it is working fine for me. If each thread gets its unique TFile then it is working without problems. |
Just some information on how to use it, in case someone wants to use it
Output of debug spline object:
corrections local X
corrections local X - formula: |
Thanks, I just added them |
My idea was to add streamers directly in the functions above, as in the |
Now I understand, I added this |
Error while checking build/O2/fullCI for 0d625ba at 2023-02-10 12:16:
Full log here. |
SpaceCharge: adding option to use analytical formula for corrections and distortions
DebugStreamer: Allow writing out streams in parallel