-
Notifications
You must be signed in to change notification settings - Fork 4.6k
Tracker Traits and Enabling Phase2 for Inner Tracker Reconstruction on GPU #38761
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
|
-code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-38761/31086
Code check has found code style and quality issues which could be resolved by applying following patch(s)
|
|
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-38761/31088
|
|
A new Pull Request was created by @AdrianoDee for master. It involves the following packages:
@Martin-Grunewald, @civanch, @Dr15Jones, @bsunanda, @makortel, @clacaputo, @emanueleusai, @ianna, @mdhildreth, @cmsbuild, @missirol, @jfernan2, @ahmad3213, @fwyzard, @jpata, @pmandrik, @micsucmed, @rvenditti can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
This is a bit strange since all |
This is odd also to me. I've set up a basic test (simply changing this happening with or without |
|
type tracking |
|
test parameters:
|
|
please test |
|
-1 Failed Tests: RelVals RelVals
GPU Comparison SummarySummary:
|
|
@cms-sw/geometry-l2 |
|
+geometry |
|
This pull request is fully signed and it will be integrated in one of the next master IBs (tests are also fine). This pull request will now be reviewed by the release team before it's merged. @perrotta, @dpiparo, @rappoccio (and backports should be raised in the release meeting by the corresponding L2) |
|
+1 Extensive review has concluded. |
|
-1 Failed Tests: RelVals-GPU RelVals-GPUValueError: Undefined workflows: 11634.502, 11634.506 Comparison SummarySummary:
|
This PR proposes the addition of a
TrackerTraitstemplate parameter for all the modules and the datastructres used for pixel tracks reconstruciton. This trait holds all the methods and constants needed to define the pixel tracker topology. Being a template, this would allow to define different datastructure sizes, selection algorithms, fitting features for the whole chain at compile time. In this way one could keep disentangled the different conditions and reconstuction targets (HLT, offline, HIon, Run3, Phase2 ...).With the implementation of such a structure this PR allows to run on GPU (and CPU) the whole Phase2 Inner Tracker reconstruction (from DIGI to pixel Tracks). A following PR will allow this also for offline pixel seeding and offline HIon pixel track reconstruction.
Find below some comments to the code to (I hope) better navigate it, the validation for run3 pixel tracks w.r.t. to
12_5_Xas it is and the performance for Phase2 IT reconstruction. Few open points are still to be addressed but I would leave them documented in an issue and to be assessed in following PRs.clusterChargeCut,calibDigisPhase2...);SiPixelPhase1CompareTrackSoAto be runnable also for Phase2.This PR also answers the comments that were left on #36235 and corrects the pixel digis calibration on gpu (in
gpuCalibPixel.h) to reproduce what is inPixelThresholdClusterizer.cc. This implies changes in the constants to be used moved toand in
Phase2KinkADCusage in the calibration. See the original algorithm (in PixelThresholdClusterizer) and the parameter sets used (in phase2TrackerDigitizer_cfi and SiPixelClusterizer_cfi)Code comments
"Backward" compatibility
This has been solved by #38806.
Partial specialization
This has been simplified during the review.
CA params: selections and cuts
In order to have possibly different cuts and selections in cell, tuple and track building and selecting the
Paramsstruct used inCAHitNtupletGeneratorKernelshas been split inAlgoParamsthat are those that are common to all topologies and act mostly on the configuration of the algorithm itself;and some specific to the topology:
CellCutsTthat includes the cuts (parameters and methods) to be applied at doublets buidling level. Note that at the moment this are the same for all the topology but having them separated would allow it to be changed in future.CAParamsTthat include the cuts (parameters and methods) and the ntuplet levels.QualityCutsTthat acts on the track selection and that was already there. It has been moved toTrackSoAHeterogeneousTheader (that seems more natural) and now the struct itself holds the methods to apply the cuts on the tracks.This (splitting and moving the cuts to be methods of the structs) whould allow to define specific cuts for specific topologies. In order to allow partial specialization and keep common implementation for topologies derived from a base topology, these are wrapped in a
topologyCutsstruct.SimplePixelTopology
Now the
SimplePixelTopologyholds all the constants that are neede for the pixel tracks reconstruction (so the formerlyCAConstants, thegpuPixelDoubletsand the formerSimplePixelTopologyitself) moving the definitions fromnamespaces tostructs in order to use them as template parameters.Note that some "helper"
namespacehave been kept following the discussion here (PR discussion).The
have been defined keeping in mind that we may have modifications to
Phase1andPhase2topologies (e.g. for HIon in Run3). Thus by defining newTrackerTraitsstruts that inherits fromPhase1andPhase2and togheter with theisPhase1Topologyand theisPhase2Topologyone could:This is achieved, e.g., the template for
ParamsTasand then specialize it for all the topologies based on
Phase1asRolling fits
In
HelixFitOnGPU.hthe helperis defined to have a "
constexpr" for loop useful to avoid code duplication when running the track fits. In this way, with the help of a lambda function the fits may be unrolled as:With
maxHitsOnTrackForFullFita new constant defined to limit the number of hits used in the fit.Phase2
Physics validation
Quadruplets:
Triplets:
Run3
Physics validation
Quadruplets:
Triplets:
Throughput
/EphemeralHLTPhysics1/Run2018D-v1/RAW run=323775 lumi=53Evaluated on
fu-c2a02-37-02T4@P5 via patatrack-scripts.There's a gain of 7-9%
Dependency graphs
GPU dependency graph
CPU dependency graph