-
Notifications
You must be signed in to change notification settings - Fork 4.4k
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
Add Alpaka implementation of PFRecHitProducer #42807
Conversation
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-42807/36921
|
A new Pull Request was created by @fllor for master. It involves the following packages:
The following packages do not have a category, yet: RecoParticleFlow/PFRecHitProducer @cmsbuild, @jfernan2, @mandrenguyen can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
Required for CMSSW PR cms-sw/cmssw#42807
PR created: cms-sw/cms-bot/pull/2070 |
assign heterogeneous |
It may be worthwhile to mention that @filor will talk about the work that went into this PR tomorrow in the particle flow group meeting. |
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.
I wonder if a new package is warranted. IIUC the current PFRecHitProducer
lives in RecoParticleFlow/PFClusterProducer
. On the other hand, the set of dependencies is quite different between the packages.
RecoParticleFlow/PFRecHitProducer/test/pfRecHitProducerAlpakaValidation.py
Outdated
Show resolved
Hide resolved
RecoParticleFlow/PFRecHitProducer/plugins/alpaka/PFRecHitProducerKernel.dev.cc
Outdated
Show resolved
Hide resolved
RecoParticleFlow/PFRecHitProducer/plugins/alpaka/PFRecHitProducerKernel.dev.cc
Outdated
Show resolved
Hide resolved
RecoParticleFlow/PFRecHitProducer/plugins/alpaka/PFRecHitTopologyESProducer.cc
Outdated
Show resolved
Hide resolved
RecoParticleFlow/PFRecHitProducer/test/harvestValidationPlot.py
Outdated
Show resolved
Hide resolved
FYI @cms-sw/pf-l2 @bellan |
type pf |
1) Merge files src/alpaka/classes_serial{.h,_def.xml} into src/classes{.h,_def.xml} and update BuildFile.xml 2) Split class definitions into two files, undoing commit 42fd4a7. This is possible due to PR cms-sw/cmsdist/pull/8705. Switching to this version required a small change to the Python configuration. These two changes were suggested for PR cms-sw#42807.
@fllor I will send you some commits to address some technical and stylish issues:
|
Please pick the |
…package 1) Allocate buffers used for PFRecHitProducerKernel per-event. This allows making the producer global. 2) Change ::Grids synchronisation to ::Blocks synchronisation for GPU backend. This removes the need to distinguish between CPU and GPU backends in the kernel code. 3) Simplify code; add comments; more meaningful names; adapt CMSSW code style These two changes were suggested for PR cms-sw#42807.
I combined all the commits from the review into the original ones. I tried to put everything into a logical sequence, with different parts of the module being introduced in separate commits. Hopefully this can help to understand the code, in case someone looks at it in the future. |
+heterogeneous |
please test |
Thank you. So, in terms of signatures, we still need it from reconstruction and pf? |
Technically, only from @cms-sw/reconstruction-l2, while @cms-sw/pf-l2 is only "for information" and does not require a signature. |
+1 Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-cb4096/35413/summary.html Comparison SummarySummary:
|
1) Merge files src/alpaka/classes_serial{.h,_def.xml} into src/classes{.h,_def.xml} and update BuildFile.xml 2) Split class definitions into two files, undoing commit 42fd4a7. This is possible due to PR cms-sw/cmsdist/pull/8705. Switching to this version required a small change to the Python configuration. These two changes were suggested for PR cms-sw#42807.
…package 1) Allocate buffers used for PFRecHitProducerKernel per-event. This allows making the producer global. 2) Change ::Grids synchronisation to ::Blocks synchronisation for GPU backend. This removes the need to distinguish between CPU and GPU backends in the kernel code. 3) Simplify code; add comments; more meaningful names; adapt CMSSW code style These two changes were suggested for PR cms-sw#42807.
+1 |
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. @antoniovilela, @rappoccio, @sextonkennedy (and backports should be raised in the release meeting by the corresponding L2) |
+1 |
PR description:
This pull-request is the first step towards making the ParticleFlow algorithm portable and heterogeneous using Alpaka. It adds a PFRecHitSoA data format and a producer that constructs it. The module can process HCAL and ECAL hits and runs on the CPU and CUDA backends of Alpaka. The ROCm backend compiles, but is untested.
Since calorimeter reconstruction is not available using Alpaka yet, this PR also introduces a CaloRecHitSoA format and a producer that converts calorimeter hits from the CPU modules to the SoA. This format and producer will become obsolete, when then HCAL/ECAL groups directly provide their own SoA formats.
A producer that converts to new PFRecHitSoA format back to the existing PFRecHit collection format is included. It can be used for validation and to run down-stream modules.
This PR does not alter any existing workflow in any way. The Alpaka module is provided but not executed for HLT reconstruction. For now, it can be used for testing and for down-stream development. The transition from the CPU implementation to Alpaka is intended to happen later, when an Alpaka implementation of the PFClusterProducer is also available.
PR validation:
Extensive validation of the Alpaka implementation is provided, see commit message of 3f4d123.
If this PR is a backport please specify the original PR and why you need to backport that PR. If this PR will be backported please specify to which release cycle the backport is meant for:
This is not a backport.
@hatakeyamak @jsamudio