-
Notifications
You must be signed in to change notification settings - Fork 483
HybridGenerator: Asyncronous + parallel event generation #13788
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
Conversation
|
REQUEST FOR PRODUCTION RELEASES: This will add The following labels are available |
d02acbb to
0c1ff2a
Compare
This introduces: * asyncronous event generation * possibility for parallel event generation This is useful for: * hiding latency (IO) of certain generators * decoupling the actual work from the call sequence into HybridGenerator * collaboration from multiple clones of the same generator to generate a certain number of events The implementation relies on tbb::task_arena and input/output queues for decoupling the task_arena from the HybridGenerator thread. An example is added for parallel event gen. In addition, this commit has the following changes: - Small adjustments to seeding of Pythia8 in order to avoid same seeds in multiple parallel Pythia instances. - possibility to init external generator from an INI file (typically done or available in O2DPG) - use shared_ptr instead of unique_ptr to keep generators in order to avoid lifetime problems with async processing - preparion to run underlying generator Init() functions in async way (not active yet; needs checks if generators are thread safe)
0c1ff2a to
526ae57
Compare
|
AliceO2Group/O2DPG#1845 updated tool for JSON template creation is proposed here related to these modifications. |
|
Error while checking build/O2/fullCI for 526ae57 at 2024-12-12 12:34: Full log here. |
This introduces: * asyncronous event generation * possibility for parallel event generation This is useful for: * hiding latency (IO) of certain generators * decoupling the actual work from the call sequence into HybridGenerator * collaboration from multiple clones of the same generator to generate a certain number of events The implementation relies on tbb::task_arena and input/output queues for decoupling the task_arena from the HybridGenerator thread. An example is added for parallel event gen. In addition, this commit has the following changes: - Small adjustments to seeding of Pythia8 in order to avoid same seeds in multiple parallel Pythia instances. - possibility to init external generator from an INI file (typically done or available in O2DPG) - use shared_ptr instead of unique_ptr to keep generators in order to avoid lifetime problems with async processing - preparion to run underlying generator Init() functions in async way (not active yet; needs checks if generators are thread safe) (cherry picked from commit f4d9b9c)
This introduces: * asyncronous event generation * possibility for parallel event generation This is useful for: * hiding latency (IO) of certain generators * decoupling the actual work from the call sequence into HybridGenerator * collaboration from multiple clones of the same generator to generate a certain number of events The implementation relies on tbb::task_arena and input/output queues for decoupling the task_arena from the HybridGenerator thread. An example is added for parallel event gen. In addition, this commit has the following changes: - Small adjustments to seeding of Pythia8 in order to avoid same seeds in multiple parallel Pythia instances. - possibility to init external generator from an INI file (typically done or available in O2DPG) - use shared_ptr instead of unique_ptr to keep generators in order to avoid lifetime problems with async processing - preparion to run underlying generator Init() functions in async way (not active yet; needs checks if generators are thread safe) (cherry picked from commit f4d9b9c)
This introduces: * asyncronous event generation * possibility for parallel event generation This is useful for: * hiding latency (IO) of certain generators * decoupling the actual work from the call sequence into HybridGenerator * collaboration from multiple clones of the same generator to generate a certain number of events The implementation relies on tbb::task_arena and input/output queues for decoupling the task_arena from the HybridGenerator thread. An example is added for parallel event gen. In addition, this commit has the following changes: - Small adjustments to seeding of Pythia8 in order to avoid same seeds in multiple parallel Pythia instances. - possibility to init external generator from an INI file (typically done or available in O2DPG) - use shared_ptr instead of unique_ptr to keep generators in order to avoid lifetime problems with async processing - preparion to run underlying generator Init() functions in async way (not active yet; needs checks if generators are thread safe) (cherry picked from commit f4d9b9c)
This introduces: * asyncronous event generation * possibility for parallel event generation This is useful for: * hiding latency (IO) of certain generators * decoupling the actual work from the call sequence into HybridGenerator * collaboration from multiple clones of the same generator to generate a certain number of events The implementation relies on tbb::task_arena and input/output queues for decoupling the task_arena from the HybridGenerator thread. An example is added for parallel event gen. In addition, this commit has the following changes: - Small adjustments to seeding of Pythia8 in order to avoid same seeds in multiple parallel Pythia instances. - possibility to init external generator from an INI file (typically done or available in O2DPG) - use shared_ptr instead of unique_ptr to keep generators in order to avoid lifetime problems with async processing - preparion to run underlying generator Init() functions in async way (not active yet; needs checks if generators are thread safe) (cherry picked from commit f4d9b9c)
This introduces: * asyncronous event generation * possibility for parallel event generation This is useful for: * hiding latency (IO) of certain generators * decoupling the actual work from the call sequence into HybridGenerator * collaboration from multiple clones of the same generator to generate a certain number of events The implementation relies on tbb::task_arena and input/output queues for decoupling the task_arena from the HybridGenerator thread. An example is added for parallel event gen. In addition, this commit has the following changes: - Small adjustments to seeding of Pythia8 in order to avoid same seeds in multiple parallel Pythia instances. - possibility to init external generator from an INI file (typically done or available in O2DPG) - use shared_ptr instead of unique_ptr to keep generators in order to avoid lifetime problems with async processing - preparion to run underlying generator Init() functions in async way (not active yet; needs checks if generators are thread safe) (cherry picked from commit f4d9b9c)
This introduces: * asyncronous event generation * possibility for parallel event generation This is useful for: * hiding latency (IO) of certain generators * decoupling the actual work from the call sequence into HybridGenerator * collaboration from multiple clones of the same generator to generate a certain number of events The implementation relies on tbb::task_arena and input/output queues for decoupling the task_arena from the HybridGenerator thread. An example is added for parallel event gen. In addition, this commit has the following changes: - Small adjustments to seeding of Pythia8 in order to avoid same seeds in multiple parallel Pythia instances. - possibility to init external generator from an INI file (typically done or available in O2DPG) - use shared_ptr instead of unique_ptr to keep generators in order to avoid lifetime problems with async processing - preparion to run underlying generator Init() functions in async way (not active yet; needs checks if generators are thread safe) (cherry picked from commit f4d9b9c)
This introduces: * asyncronous event generation * possibility for parallel event generation This is useful for: * hiding latency (IO) of certain generators * decoupling the actual work from the call sequence into HybridGenerator * collaboration from multiple clones of the same generator to generate a certain number of events The implementation relies on tbb::task_arena and input/output queues for decoupling the task_arena from the HybridGenerator thread. An example is added for parallel event gen. In addition, this commit has the following changes: - Small adjustments to seeding of Pythia8 in order to avoid same seeds in multiple parallel Pythia instances. - possibility to init external generator from an INI file (typically done or available in O2DPG) - use shared_ptr instead of unique_ptr to keep generators in order to avoid lifetime problems with async processing - preparion to run underlying generator Init() functions in async way (not active yet; needs checks if generators are thread safe) (cherry picked from commit f4d9b9c)
This introduces:
This is useful for:
The implementation relies on tbb::task_arena and input/output queues for decoupling the task_arena from the HybridGenerator thread.
Small adjustments to seeding of Pythia8 in order
to avoid same seeds in multiple parallel Pythia instances.