-
Notifications
You must be signed in to change notification settings - Fork 61
Performance
Note that CMSSW 8_0_X and 9_4_X are based on fastjet 3.1.0 and fastjet-contrib 1.026.
HOTVR works with fastjet 3.1.0, but has a significant speedup with fastjet 3.2.1. e.g. for ttbar MC 1.21 s/evt (v3.1.0) vs 0.30 s/evt (v3.2.1).
However, due to an API change in fastjet::JetDefinition, CMSSW packages that create an instance of that class must be checked out & recompiled (RecoBTag/SecondaryVertex, RecoJets/JetAlgorithms, RecoJets/JetProducers, PhysicsTools/JetMCAlgos).
The ECF modules have a significant speedup with fastjet-contrib 1.032 e.g. 0.159 s/evt (1.026) vs 0.016 s/evt (v1.032).
For comparison, the total event time for MC is then ~ 2.5s with the above changes (was ~4s before). For data the event time is ~ 1.8s with changes (was ~ 3s before).
- plain miniAOD: 40-60kB/event, depending on sample and pileup scenario
- old SFrame ntuple (with all jet constituents): around 10% less than plain miniAOD
- miniAOD+topjets: around 80kB/event for high-pileup --> adds around 30% to plain miniAOD (main culprit: patJetCA8CHS, so could be trimmed down a little)
- small version of SFrame ntuple (=without jet constituents): around 5kB/event
- running ntuplewriter only (on miniAOD+topjets sample), writing the small ntuple: 300 events/sec. This is the "baseline performance" to be expected when running AnalysisModules within CMSSW.
- running ntuplewriter only, but writing large ntuple: 6 events/sec
- running on miniAOD and writing both, miniAOD+topjets file AND small ntuple: 2 events/sec (for large ntuple: 1.5 events/s)
The time requirement for the last item is mainly due to the additional jet collections produced in CMSSW modules, such as heptoptag, cmstoptag, ca15, ca8 jets. In the current configuration, this takes most of the time, almost 0.5s per event.
This section summarizes the CMSSW performance of the ntuplewriter.py in the next-ntuple-format branch with CMSSW74X, tested with a Tpime-pair sample.
The measured time per event is around 2.4s. This is much more than the previous version, which only used 0.5s per event. From those 2.4s, more than 1.7s are spent for Qjets volatility (half for ca8, half for ca15), another ~0.1s for each of the three categories:
- ca0.8 jets + gen + pruned + pruned-gen
- ca1.5 jets + gen + filtered + filtered-gen
- cmstoptag + gen + heptoptag + gen
Some optimization could be achieved by:
- optimizing Qjets volatility
- rising the pt cut to calculate Qjets for fewer jets (currently: minimum pt of 100GeV)
- get rid of gen collection for some of the above jet algos could save ~half of the ~0.3s currently spent
Note that the measurement was done on a Tprime sample; the time on other samples, esp. SM backgrounds, is probably much lower as there are fewer high-pt jets to calculate Qjets volatility for.
-
Ntuple instructions per branch/release
- 10_6_X, UL16/17/18
- 10_2_X, 2016/17/18
- 9_4_X, 2017
- 9_2_X, 2017
-
8_0_X, 2016
- Installing and Compiling (Run II, 80X, miniAOD v1, 80X_v1)
- Ntuple Production (Run II, 80X, MiniAODv1)
- Installing, Compiling and Ntuples (Run II, 80X, miniAOD v2, 80X_v2)
- Installing, Compiling and Ntuples (Run II, 80X, Moriond17, 80X_v3)
- Installing, Compiling and Ntuples (Run II, 80X, miniAOD v2, HOTVR & XCone reprocessing, 80X_v5)
-
Analysis info
- crab kill, follow-up tasks, duplicates
- Running failing crab jobs locally
- Checking & Reprocessing of missing ntuples
- Creating & using luminosity ROOT file in SFrame
- Finding a MINIAOD file from an ntuple event
- Luminosity & cross-section weighting information for Monte Carlo samples
- NtupleFormat
- Pileup reweighting for MC
- 2017 MC samples with buggy pileup
- Recipe for PDF uncertainties (RunII, 25ns, MiniAODv2)
- Running
- Singularity (using SL6 on EL7)
- Storing user variables in objects
- Trigger Paths & Filters; storing trigger objects
- Working with DESY Tier 2 dCache (
/pnfs) - Tier2 UHH2 group space
- Application of Keras Neural-Network in UHH2
-
Developer tips
- (Top) Jet collections in Ntuples
- Adding a new object class to ntuples
- CMSSW vs. SFrame
- Code Conventions
- Code Overview
- Committing & Contributing Code
- Compiling and installing fastjet, fastjet contrib
- Continuous Integration
- Continuous Integration Setup Instructions
- Debugging tips
- git(hub) tutorial
- Handling different years (RunII_102_v1 10_2_X and beyond)
- Event Class
- Maintainer Responsibilities
- Metadata
- OS Acronyms
- Performance
- Porting changes across branches (cherry-picking)
- Renaming a ntuple collection
- Using an external package
- DNN/TF dev planning
-
Older ntuple instructions
-
7_6_X, 25ns, 2015
- Installing and Compiling (Run II, 25ns)
- Installing and Compiling (Run II, 25ns, miniAOD v2)
- Installing and Compiling (Run II, 76X, 25ns, miniAOD v2)
- Ntuple Production (Run II, 25ns v1 MC ONLY!)
- Ntuple Production (Run II, 25ns, MiniAODv2)
- Ntuple Production (Run II, 25ns, prompt reco D v3)
- Ntuple Production (Run II, 76X, 25ns, MiniAODv2)
- 7_4_X, 50ns, 2015
- Phys14, 2014
-
7_6_X, 25ns, 2015