SiStripClusterizer, an Alpaka port of the CUDA ClustersFromRawProducerGPU
PR 47629
Description
Pull request to merge an heterogeneous implementation of the silicon strip unpacker/clusterizer SiStripClusterizerFromRaw module (legacy), whose purpose is producing strip clusters from raw FED data.
Legacy and heterogeneous implementations of the unpacker/clusterizer share both unpacking and clustering algorithms, with the heter. version having the needed generalizations to allow for parallel implementation.
Overview of the implementation
Details of the heterogeneous implementation can be found in here[1], while a summary is presented below. The parallel implementation consists of:
- the
ESProducercalledSiStripClusterizerConditionsESProducerAlpaka. It is analogous to the legacy SiStripClusterizerConditionsESProducer. It has the purpose of reshuffling the strip conditions (good strips, cabling, etc.) in a more convenient portable format for the parallel algo; - the
SiStripRawToCluster(alpakastream::SynchronizingEDProducer). It takes the inputRawFEDCollectionand unpacks the fed raw bytes into pairs of (strip, ADC) - henceforth referred as strip digi. It performs the clusterization of the strip digi according to the ThreeThreshold algo. Finally, the resulting digi and cluster data are exported as SoA collections; - the
SiStripClustersToLegacy(edmglobal::EDProducer) EDProducer, which is a cpu producer converting the clusters and digi SoA collections into the legacy format used downstream by other modules (DetSetVector<SiStripCluster>, with digi amplitudes asSiStripClustermembers).
The two DataFormats are introduced:
SiStripClusterSoA, which contains the data members ofSiStripClusterlegacy class reshuffled into a PortableCollection SoA;SiStripDigiSoA, as above but for theSiStripDigiclass.
MaxSeedStrips
As explained in [1], the clusterizer's parallel implementation requires to pre-allocate the cluster candidate collection (host operation) at a time where the total number of cluster candidates is not known. Therefore, the MaxSeedStrips parameter is introduced in the parallel version. It determines the maximum number of cluster candidates per event that can be produced.
It is configurable during module setup. The sensitivity of clusters produced as a function of this parameter is investigated with PU MC run [2]. The default value is set to $2e5$. The parameter can be personalized with
process.hltSiStripRawToClustersFacilityAlpaka.Clusterizer.MaxSeedStrips = cms.uint32(200000)
Physics validation
The heterogeneous module is validated by comparing the track quality with respect to legacy, and by looking at the strip DQM plots [7], using 9400 events from the dataset /RelValTTbar_14TeV/CMSSW_15_0_0-PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/GEN-SIM-DIGI-RAW with the menu /dev/CMSSW_15_0_0/GRun/V76 running MC_ReducedIterativeTracking_v24 path only in CMSSW_15_0_6.
Validation plots are available here [8], with the recipe to reproduce (and files) reported in the accordion below.
Recipe
Steps
Preparation of step 1 (hltx_trackingOnly_MC_1.py) configuration files:
hltGetConfiguration /dev/CMSSW_15_0_0/GRun/V76 --globaltag 142X_mcRun3_2025_realistic_v7 --mc --unprescale --output minimal --eras Run3_2025 --l1-emulator uGT --paths MC_ReducedIterativeTracking_v24 --max-events 1000 --input /store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root &> hltx_trackingOnly_MC_1.py
The step 2 for the HLTRACKVALIDATOR process is available in [9].
The step 3 is the standard harvester for hltMerged [10].
For example, the following script is used to generate legacy/alpakaGPU/alpakaSerial files
#!/bin/bash
for i in {1..10}; do
echo ">>> Iteration $i"
cp hltx_trackingOnly_MC_$i.py hltx_trackingOnly_MC.py
## Legacy
cmsRun hltx_trackingOnly_MC_legacy.py &> step1_legacy.log$i
cmsRun hltValidation_default.py --appendStr _legacy &> step2_legacy.log$i
cmsRun Harvesting.py --appendStr _legacy &> step3_legacy.log$i
mv DQM_V0001_R000000001__Global__CMSSW_X_Y_Z__RECO.root step3_legacy.$i.root
rm step1_legacy.root
mv step2_legacy_DQMoutput.root step2_legacy_DQMoutput.$i.root
## Alpaka GPU
cmsRun hltx_trackingOnly_MC_alpaka.py --moduleBackend cuda_async &> step1_alpakaGPU.log$i
cmsRun hltValidation_default.py --appendStr _alpakaGPU &> step2_alpakaGPU.log$i
cmsRun Harvesting.py --appendStr _alpakaGPU &> step3_alpakaGPU.log$i
mv DQM_V0001_R000000001__Global__CMSSW_X_Y_Z__RECO.root step3_alpakaGPU.$i.root
rm step1_alpakaGPU.root
mv step2_alpakaGPU_DQMoutput.root step2_alpakaGPU_DQMoutput.$i.root
## Alpaka CPU
cmsRun hltx_trackingOnly_MC_alpaka.py --moduleBackend serial_sync &> step1_alpakaCPU.log$i
cmsRun hltValidation_default.py --appendStr _alpakaCPU &> step2_alpakaCPU.log$i
cmsRun Harvesting.py --appendStr _alpakaCPU &> step3_alpakaCPU.log$i
mv DQM_V0001_R000000001__Global__CMSSW_X_Y_Z__RECO.root step3_alpakaCPU.$i.root
rm step1_alpakaCPU.root
mv step2_alpakaCPU_DQMoutput.root step2_alpakaCPU_DQMoutput.$i.root
done
mv ./*.root ./data/
mv ./*.log* ./logs/
Files
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
/store/relval/CMSSW_15_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_142X_mcRun3_2025_realistic_v7_STD_2025_PU-v3/2580000/067c3ad3-f8cf-493a-9511-57ec6d2ff29e.root
Early validation (in CMSSW_15_1_0_pre1)
An early validation was done on a smaller number of events (731) from /store/mc/Run3Winter25Digi/TT_TuneCP5_13p6TeV_powheg-pythia8/GEN-SIM-DIGI-RAW/TrkFEVT_142X_mcRun3_2025_realistic_v7-v2/910002/0157fbd9-e915-4a10-bfe2-11db61e2b70d.root of PU MC data, in CMSSW_15_1_0_pre1 with /dev/CMSSW_15_1_0/GRun/V3 running only MC_ReducedIterativeTracking_v22 path [5].
Deviations were found between the legacy and heterogeneous (i.e. see [5.1]) and discussed on Tracking POG meeting [6]. A cluster excess O(1) is found in the heterogeneous with respect to legacy having occurrence of O(12/500) events. The deviation legacy-heterogeneous was considered to have negligible impact on the performance by tracking experts during [6].
Timing
The most recent timing measurement is reported below, using Run2025 data Run392642 with L1 L1Menu_Collisions2025_v1_1_1-d2 and HLT /dev/CMSSW_15_0_0/GRun/V76, GlobalTag 150X_dataRun3_HLT_v1 in CMSSW_15_0_6 release
| configuration | throughput | (time/ev)_avg = unpacking+clustering (+legacy conversion) |
ECAL-GPU |
|---|---|---|---|
| legacy[D] | 545.9 ± 2.7 evt/s | 34.2 ms = hltSiStripRawToClustersFacility (34.2 ms) |
4.0 ms |
| heterogeneous[E] | 556.5 ± 0.9 evt/s | 13.5 ms = hltSiStripRawToClustersFacilityAlpaka (6.0 ms) + hltSiStripRawToClustersFacility (7.5 ms) |
9.3 ms |
| heterogeneous (serial)[F] | 509 ± 2.2 evt/s | 68.6 ms = hltSiStripRawToClustersFacilityAlpaka (59.5 ms) + hltSiStripRawToClustersFacility (9.1 ms) |
3.2 ms |
The measures have been done on the timing server one after the other, launching the jobs in area mode from lxplus8 from a fresh CMSSW area with the PR rebased on 15_0_6.
Previous measurements (Run2024)
using Run2024 data Run392642 with L1 L1Menu_Collisions2024_v1_3_0-d1_xml and HLT /dev/CMSSW_15_0_0/GRun/V79, GlobalTag 150X_dataRun3_HLT_v1 in CMSSW_15_0_6 release:
| configuration | throughput | (time/ev)_avg = unpacking+clustering (+legacy conversion) |
ECAL-GPU |
|---|---|---|---|
| legacy global unpacking[A] | 529.6 ± 2.5 evt/s | 32.1 ms = hltSiStripRawToClustersFacility (32.1 ms) |
5.7 ms |
| alpaka global unpacking on CPU[B] | 506.8 ± 2.7 evt/s | 54.9 ms = hltSiStripRawToClustersFacilityAlpaka (46.9 ms) + hltSiStripRawToClustersFacility (7.9 ms) |
4.6 ms |
| alpaka global unpacking on GPU[C] | 534.5 ± 2.9 evt/s | 13.5 ms = hltSiStripRawToClustersFacilityAlpaka (5.8 ms) + hltSiStripRawToClustersFacility (7.7 ms) |
15.8 ms |
Usage and customizer
Compilation
To create a CMSSW_15_0_1_pre1 area
scram project CMSSW_15_0_1_pre1
cd CMSSW_15_0_1_pre1/src
cmsenv
git cms-merge-topic pietroGru:47629
scram b
Timing measurements were done after rebase in CMSSW_15_0_6
scram project CMSSW_15_0_6
cd CMSSW_15_0_6/src
cmsenv
git cms-merge-topic --old-base CMSSW_15_0_1_pre1 pietroGru:47629
scram b
Customizer
A customizer called customizeHLTStripClustersFromRaw_alpaka performs the following operations to replace the legacy module with the heterogeneous one: (a) it attaches to process the SiStripClusterizerConditionsESProducerAlpaka ESProducer generating device conditions; (b) it attaches to process the cluster producer (process.hltSiStripRawToClustersFacilityAlpaka) which inherits all the arguments of the legacy module from process.hltSiStripRawToClustersFacility; (c) it replaces the legacy process.hltSiStripRawToClustersFacility with the module converting the cluster SoA into the legacy format (i.e., what the legacy module outputs).
For example
hltGetConfiguration [...] \
--customise RecoLocalTracker/SiStripClusterizer/customizeStripClustersFromRaw.customizeHLTStripClustersFromRaw_alpaka
To run the module serially on CPU
The following can be appended to the hlt.py
process.hltSiStripRawToClustersFacilityAlpaka.alpaka = cms.untracked.PSet(
# ("serial_sync" or "cuda_async" or "rocm_async")
backend = cms.untracked.string("serial_sync")
)
History
- This work was on top of an Alpaka porting of the CUDA unpacker/clusterizer [3]
- Originally based on
CMSSW_14_2_0, then moved toCMSSW_15_0_1_pre1 - The PR stayed in draft and then was opened, resulting in a large number of commits (71). After [11], it was decided to squash them in order to cleanout the repository. The three main commits containing the dataformats, ES/EDProducer and converter were made. The description of the PR was updated for more clarity, accordingly.
- A backup of the repository before squashing [12], as well as a dump of the PR page with all comments [13]
References
[1] https://indico.cern.ch/event/1554466/#68-update-on-alpaka-strip-unpa
[2] using /store/mc/Run3Winter25Digi/TT_TuneCP5_13p6TeV_powheg-pythia8 https://pgrutta.web.cern.ch/siStripClusterizer_1510pre1/validation_v4_compare/clustersMonitor.html
[3] https://github.com/cms-sw/cmssw/pull/34618
[4] https://mattermost.web.cern.ch/cms-exp/channels/sistrip-unpacking-on-gpu
[5] https://pgrutta.web.cern.ch/siStripClusterizer_1510pre1/validation_v2/
[5.1] https://pgrutta.web.cern.ch/siStripClusterizer_1510pre1/validation_v2/plots_hlt_hltMerged/effandfakePtEtaPhi.pdf
[6] https://indico.cern.ch/event/1549492/#66-strip-detector-unpacking-on
[7] DQM/HLTEvF/python/HLTSiStripMonitoring_cff.py
[8] https://pgrutta.web.cern.ch/siStripClusterizer_1510pre1/validation_v4.2
[9] https://pgrutta.web.cern.ch/siStripClusterizer_1510pre1/config/hltValidation_default.py
[10] https://pgrutta.web.cern.ch/siStripClusterizer_1510pre1/config/Harvesting.py, https://pgrutta.web.cern.ch/siStripClusterizer_1510pre1/config/Harvesting_all.py
[11] https://indico.cern.ch/event/1567945/
[12] https://github.com/pietroGru/cmssw/tree/backup/siStripClusterizer_1510pre1_preSquash
[13] https://pgrutta.web.cern.ch/siStripClusterizer_1510pre1/backup_47629.pdf
[A] https://cmshlttiming.app.cern.ch/display/pgrutta/CMSSW_15_0_6_LegacyGlobal_16.20250528_183634 [B] https://cmshlttiming.app.cern.ch/display/pgrutta/CMSSW_15_0_6_Heterogeneous_Serial_16.20250528_163330 [C] https://cmshlttiming.app.cern.ch/display/pgrutta/CMSSW_15_0_6_Heterogeneous_16.20250528_163207 [D] https://cmshlttiming.app.cern.ch/display/pgrutta/CMSSW_15_0_6_LegacyBaseline.20250725_151017 [E] https://cmshlttiming.app.cern.ch/display/pgrutta/CMSSW_15_0_6_Heterogeneous.20250725_150923 [F] https://cmshlttiming.app.cern.ch/display/pgrutta/CMSSW_15_0_6_Heterogeneous_serial.20250725_150820
cms-bot internal usage
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/44152
- There are other open Pull requests which might conflict with changes you have proposed:
- File RecoLocalTracker/SiStripClusterizer/python/customizeStripClustersFromRaw.py modified in PR(s): #46076
sorry, a very naive first trial of this via:
#!/bin/bash -ex
# cmsrel CMSSW_15_1_X_2025-03-18-2300
# cd CMSSW_15_1_X_2025-03-18-2300/src/
# cmsenv
# git cms-merge-topic 47629
# scram b -j 20
hltGetConfiguration /dev/CMSSW_15_0_0/GRun \
--globaltag 150X_dataRun3_HLT_v1 \
--data \
--unprescale \
--output minimal \
--max-events 100 \
--eras Run3_2024 --l1-emulator uGT --l1 L1Menu_Collisions2024_v1_3_0_xml \
--customise RecoLocalTracker/SiStripClusterizer/customizeStripClustersFromRaw.customizeHLTStripClustersFromRaw_alpaka \
--input /store/data/Run2024I/EphemeralHLTPhysics0/RAW/v1/000/386/593/00000/91a08676-199e-404c-9957-f72772ef1354.root \
> hltData.py
cmsRun hltData.py >& hltData.log
leads me to:
----- Begin Fatal Exception 19-Mar-2025 21:44:08 CET-----------------------
An exception of category 'RawToDigi' occurred while
[0] Processing Event run: 386593 lumi: 235 event: 535750267 stream: 2
[1] Running path 'MC_ReducedIterativeTracking_v22'
[2] Calling method for module SiStripRawToCluster@alpaka/'hltSiStripRawToClustersFacilityAlpaka'
Exception Message:
Unsupported readout mode: Zero suppressed lite (8 bit, top-stripped)
----- End Fatal Exception -------------------------------------------------
was this ever tested in recent Run 3 real data? @cms-sw/trk-dpg-l2 FYI
sorry, a very naive first trial of this leads me to:
----- Begin Fatal Exception 19-Mar-2025 21:44:08 CET----------------------- An exception of category 'RawToDigi' occurred while [0] Processing Event run: 386593 lumi: 235 event: 535750267 stream: 2 [1] Running path 'MC_ReducedIterativeTracking_v22' [2] Calling method for module SiStripRawToCluster@alpaka/'hltSiStripRawToClustersFacilityAlpaka' Exception Message: Unsupported readout mode: Zero suppressed lite (8 bit, top-stripped) ----- End Fatal Exception -------------------------------------------------was this ever tested in recent Run 3 real data? @cms-sw/trk-dpg-l2 FYI
This is the same behaviour that we found when running on real data today. After this independent check (thank you) I am afraid that another bullet point should be inserted, in order to allow for the raw->digi kernel to unpack the ZS_LITE8, at the very least.
When I ran tests, I always used MC data as for example /RelValTTbar_14TeV/CMSSW_14_2_0-PU_142X_mcRun3_2025_realistic_v4_Winter25_PU_RV255-v2/GEN-SIM-DIGI-RAW. I will double check with some more recent MC but I guess it is possible that the MC still produce FEDcollections which are ZS 10-bit packed.
This is the same behaviour that we found when running on real data today. After this independent check (thank you) I am afraid that another bullet point should be inserted, in order to allow for the raw->digi kernel to unpack the ZS_LITE8, at the very least.
When I ran tests, I always used MC data as for example
/RelValTTbar_14TeV/CMSSW_14_2_0-PU_142X_mcRun3_2025_realistic_v4_Winter25_PU_RV255-v2/GEN-SIM-DIGI-RAW. I will double check with some more recent MC but I guess it is possible that the MC still produce FEDcollections which are ZS 10-bit packed.
As far as I know (all of this information has been cross-checked with Tracker Ops):
- the normal operations mode since beginning of Run 2 (in pp and cosmics during pp interfills data-taking) for packing the Strip Tracker data is ZS lite 8 bits with 2 highest bits being stripped (in principle we have another 2 modes for 8 bits with one high one / low strips and two low stripped, basically losing resolution instead of dynamic range);
- in Heavy Ion data we use ZS 10 bits;
- last year for a brief period of time we had been running without realizing in ZS normal but due to high dead-time on the FEDs most populated in TIB Layer 1 this was reverted and we've been running in ZS lite again since then (in Run 1 we were limited to 80 kHz when running in ZS Normal)
- In MC simulation the Strip packer module, as far as I know has always been and still uses Standard ZS:
https://github.com/cms-sw/cmssw/blob/8fd36f394766629116ffa00185e35b1579ec2f0b/EventFilter/SiStripRawToDigi/python/SiStripDigiToRaw_cfi.py#L3-L7
Hi @dan131riley , can you comment on the motivation you had the ZS readout mode in your original PR with cuda implementation?
Thank you! Pietro
https://mattermost.web.cern.ch/cms-exp/channels/sistrip-unpacking-on-gpu
this is in Italian, not very useful
https://mattermost.web.cern.ch/cms-exp/channels/sistrip-unpacking-on-gpu
this is in Italian, not very useful
It is true: former discussion on the mattermost channel, as you noted, is in italian. This is about the stages from the cuda version to the alpaka one, leading to the 1:1 match of the cuda product in alpaka. This module is the subject of the PR.
However, the PR is in draft mode because - as clearly emerged from the previous comments - in order to integrate this module one has to go beyond 1:1 port of the cuda code. In fact, implementation of fed raw unpacking shall include at the very least the 8-bit ZS mode.
On the premise that (a) the material in the channel so far - indeed in italian - concers the "relatively-trivial" stages of the cuda-alpaka porting, I directly shared the link to the channel. Giving for granted that once this discussion on the additional features to append to the PR with you experts would have been by default in english.
Now that this background is more clear, would you recommend to create a fresh channel from scratch?
Now that this background is more clear, would you recommend to create a fresh channel from scratch?
I think that it's more practical to discuss code specifics for what needs updates in an available PR thread (here).
Maybe for some future discussion the MM can be still useful
assign heterogeneous
New categories assigned: heterogeneous
@fwyzard,@makortel you have been requested to review this Pull request/Issue and eventually sign? Thanks
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/44214
-
Found files with invalid states:
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/README.md:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripMappingSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/src/alpaka/T_EventSetup_SiStrip.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripClusterizerConditionsSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
-
There are other open Pull requests which might conflict with changes you have proposed:
- File RecoLocalTracker/SiStripClusterizer/python/customizeStripClustersFromRaw.py modified in PR(s): #46076
Pull request #47629 was updated.
-code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/44224
-
Found files with invalid states:
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/README.md:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripMappingSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/src/alpaka/T_EventSetup_SiStrip.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripClusterizerConditionsSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
-
There are other open Pull requests which might conflict with changes you have proposed:
- File RecoLocalTracker/SiStripClusterizer/python/customizeStripClustersFromRaw.py modified in PR(s): #46076
Code check has found code style and quality issues which could be resolved by applying following patch(s)
- code-format:
https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/44224/code-format.patch
e.g.
curl -k https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/44224/code-format.patch | patch -p1You can also runscram build code-formatto apply code format directly
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/44226
-
Found files with invalid states:
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/README.md:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripMappingSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/src/alpaka/T_EventSetup_SiStrip.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripClusterizerConditionsSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
-
There are other open Pull requests which might conflict with changes you have proposed:
- File RecoLocalTracker/SiStripClusterizer/python/customizeStripClustersFromRaw.py modified in PR(s): #46076
Pull request #47629 was updated.
@mmasciov and @slava77 can you please comment on the consistency check for mode in
https://github.com/cms-sw/cmssw/blob/master/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L65-L68
In particular,
- is the readout mode expected to be consistent between one buffer and another?
- Or it was only a way to ensure that in (case the mode was not consistent) AND (not one of the envisaged two) the module would have stopped? [1]
[1] The envisaged two are READOUT_MODE_ZERO_SUPPRESSED and READOUT_MODE_ZERO_SUPPRESSED_LITE10 as from https://github.com/cms-sw/cmssw/blob/master/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L76-L78
What about the len == 0 case? Why does this happen?
https://github.com/cms-sw/cmssw/blob/master/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L99
@mmasciov and @slava77 can you please comment on the consistency check for
modein https://github.com/cms-sw/cmssw/blob/master/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L65-L68In particular,
- is the readout mode expected to be consistent between one buffer and another?
- Or it was only a way to ensure that in (case the mode was not consistent) AND (not one of the envisaged two) the module would have stopped? [1]
[1] The envisaged two are
READOUT_MODE_ZERO_SUPPRESSEDandREADOUT_MODE_ZERO_SUPPRESSED_LITE10as from https://github.com/cms-sw/cmssw/blob/master/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L76-L78What about the
len == 0case? Why does this happen? https://github.com/cms-sw/cmssw/blob/master/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L99
Let me tag @dan131riley, since he wrote this and knows best.
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/44296
-
Found files with invalid states:
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/README.md:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripMappingSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/src/alpaka/T_EventSetup_SiStrip.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- RecoLocalTracker/SiStripClusterizer/plugins/alpaka/SiStripClustersToLegacy.cc:
- Added: 9593e53c1267d7676de9d883a5e787b3aeb41b86
- Modified: 8c79c7c3feb85831eca4bff355da38a7a5f8daf5, 9fe439a4025eae782fdfbef706167dda573653f4
- Deleted: 112bdc42c31a90d8acf0b17a0569ed1b519a3692
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripClusterizerConditionsSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
-
There are other open Pull requests which might conflict with changes you have proposed:
- File RecoLocalTracker/SiStripClusterizer/python/customizeStripClustersFromRaw.py modified in PR(s): #46076
Pull request #47629 was updated.
Hi @dan131riley , I noted a detail in the ZS unpacking in your cuda core, which I would like to have clarified.
In the unpacked Digi, there are invalidStrip at the beginning of each FEDChannel.
The part in the cuda code responsible for this is here:
https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cu#L58-L61
The resulting unpacked strips have the form
%MSG-d unpackStrips: sistrip::SiStripRawToCluster@alpaka:hltSiStripRawToClustersFacilityAlpaka 30-Mar-2025 17:22:10 CEST Run: 386593 Event: 536206491 SiStripRawToClusterAlgo.dev.cc:867
Allocated 643879 strips
i adc chan stripId
0 0 65535
1 0 65535
2 20 71
3 110 72
4 128 73
5 0 65535
6 0 65535
7 104 129
8 20 130
9 0 65535
10 0 65535
11 16 215
12 89 216
13 40 217
14 15 218
15 0 65535
16 0 65535
17 58 261
Where the two entries with invalidStrip are due to the two lines of your code
https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cu#L58-L61
responsible for shifting the aoff index.
I believe that such a choice was to align the structures produced by the "standard" cpu unpacker https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/EventFilter/SiStripRawToDigi/interface/SiStripFEDBuffer.h#L288-L290 in which the first byte of the FEDChannel data contains the information on how many strips this object is storing: https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/EventFilter/SiStripRawToDigi/interface/SiStripFEDBuffer.h#L289C13-L289C24
In accounting for the amount of bytes needed in the unpacked digi structure
https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L99-L104
the headerLen is already subtracted in the calculation of the bytes https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L116
needed for the strips - as this is not relevant and its memory can be saved.
However, there are these two entries of the unpacked object you are filling https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cu#L58-L66 which are eventually masked out https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cu#L93 and not being used.
Can you explain in detail what is the purpose of this? Thank you!
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/44309
-
Found files with invalid states:
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/README.md:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripMappingSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/src/alpaka/T_EventSetup_SiStrip.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- RecoLocalTracker/SiStripClusterizer/plugins/alpaka/SiStripClustersToLegacy.cc:
- Added: 9593e53c1267d7676de9d883a5e787b3aeb41b86
- Modified: 8c79c7c3feb85831eca4bff355da38a7a5f8daf5, 9fe439a4025eae782fdfbef706167dda573653f4
- Deleted: 112bdc42c31a90d8acf0b17a0569ed1b519a3692
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripClusterizerConditionsSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
-
There are other open Pull requests which might conflict with changes you have proposed:
- File RecoLocalTracker/SiStripClusterizer/python/customizeStripClustersFromRaw.py modified in PR(s): #46076
Pull request #47629 was updated.
Hi @dan131riley , I noted a detail in the ZS unpacking in your cuda core, which I would like to have clarified.
In the unpacked Digi, there are
invalidStripat the beginning of each FEDChannel. The part in the cuda code responsible for this is here:
For the ZS unpacking, there's two levels of data containers. There's an outer container for each channel, which gets parsed in the CPU code (in the CUDA version) and is not copied to the GPU. Then within the channel, in the zero suppressed mode the data are run length encoded--for every run of consecutive strips that aren't zero supporessed, there's a byte for the starting strip within the channel and a length of the run. I believe optimizing those two bytes out would require introducing a serial step that maps out where the clusters start, which I was trying to avoid.
Where the two entries with
invalidStripare due to the two lines of your code https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cu#L58-L61 responsible for shifting theaoffindex.
Those two bytes are in the incoming data stream, setting them to invalidStrip tells the rest of the algorithm to ignore these without requiring an additional serial pass to map out the individual clusters.
In accounting for the amount of bytes needed in the unpacked digi structure https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L99-L104 the
headerLenis already subtracted in the calculation of the bytes https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cc#L116 needed for the strips - as this is not relevant and its memory can be saved.
The FED channel header is subtracted out, but those two bytes/cluster are not the channel header.
However, there are these two entries of the unpacked object you are filling https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cu#L58-L66 which are eventually masked out https://github.com/pietroGru/cmssw/blob/siStripClusterizer_1510pre1/RecoLocalTracker/SiStripClusterizer/plugins/SiStripRawToClusterGPUKernel.cu#L93 and not being used.
Can you explain in detail what is the purpose of this? Thank you!
Those two entries are used to set the stripId array. That and the channel array could be reduced in size by using the run length encoding again, but it gets tricky doing that in parallel as you don't know how many clusters there are in any channel.
Thanks Dan! (and thank you all for your valuable comments) There are a few open point left to be addressed: they mostly include the "unresolved" comments. During the Short Joint Tracker DPG / Tracking POG meeting we covered all remaning open points (included here).
It has been recommended to request a test run, during cosmics, in which we request to change the readout mode of a fed channel - i.e., during data taking. We are discussing this today and planning for the request and coordination with ops.
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/44556
-
Found files with invalid states:
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/README.md:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripMappingSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/src/alpaka/T_EventSetup_SiStrip.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- RecoLocalTracker/SiStripClusterizer/plugins/alpaka/SiStripClustersToLegacy.cc:
- Added: 9593e53c1267d7676de9d883a5e787b3aeb41b86
- Modified: 8c79c7c3feb85831eca4bff355da38a7a5f8daf5, 9fe439a4025eae782fdfbef706167dda573653f4
- Deleted: 112bdc42c31a90d8acf0b17a0569ed1b519a3692
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripClusterizerConditionsSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
-
There are other open Pull requests which might conflict with changes you have proposed:
- File DataFormats/Common/src/classes_def.xml modified in PR(s): #47793
- File RecoLocalTracker/SiStripClusterizer/python/customizeStripClustersFromRaw.py modified in PR(s): #46076
Pull request #47629 was updated.
-code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/45061
ERROR: Unable to merge PR.
See log https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/45061/cms-checkout-topic.log
+code-checks
Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-47629/45062
-
Found files with invalid states:
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/README.md:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripMappingSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/src/alpaka/T_EventSetup_SiStrip.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- RecoLocalTracker/SiStripClusterizer/plugins/alpaka/SiStripClustersToLegacy.cc:
- Added: 9593e53c1267d7676de9d883a5e787b3aeb41b86
- Modified: 8c79c7c3feb85831eca4bff355da38a7a5f8daf5, 9fe439a4025eae782fdfbef706167dda573653f4
- Deleted: 112bdc42c31a90d8acf0b17a0569ed1b519a3692
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/alpaka/TestSiStripMappingDevice.dev.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/test/TestSiStripClusterizerConditionsSoA.cc:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingHost.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/alpaka/SiStripClusterizerConditionsDevice.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripMappingSoA.h:
- Added: dc0e229accc7ca37899571ef42a54db91ba35c36
- Deleted: f504f95c69b74c490a37aefdc13ce94036dc04ed
- CondFormats/SiStripObjects/interface/SiStripClusterizerConditionsSoA.h:
-
There are other open Pull requests which might conflict with changes you have proposed:
- File RecoLocalTracker/SiStripClusterizer/python/customizeStripClustersFromRaw.py modified in PR(s): #46076
Pull request #47629 was updated.