-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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
Alpaka implementation of Hcal Local Reconstruction (Mahi) #44910
Conversation
cms-bot internal usage |
-code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-44910/40188
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-44910/40189
|
A new Pull Request was created by @kakwok for master. It involves the following packages:
@syuvivida, @francescobrivio, @makortel, @rvenditti, @mandrenguyen, @fwyzard, @tjavaid, @mdhildreth, @saumyaphor4252, @perrotta, @consuegs, @jfernan2, @cmsbuild, @civanch, @nothingface0, @antoniovagnerini can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
type hcal |
#include "FWCore/Utilities/interface/bit_cast.h" | ||
#include "HeterogeneousCore/AlpakaInterface/interface/config.h" | ||
|
||
// Note: Does not compile with ALPAKA_FN_ACC on ROCm |
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.
Well, given the #ifdef
, the function is defined both for the host and the device, so it makes sense that it doesn't compile as a pure __device__
function.
The canonical alpaka approach would be to have different specialisation for each accelerator - but we can clean this up later.
@cms-sw/pdmv-l2 @cms-sw/reconstruction-l2 kind ping. |
+1 |
@Dr15Jones as far as I can see the @cms-sw/core-l2 signature is required because of the changes in <class name="edm::Wrapper<std::map<edm::ParameterSetID,edm::ParameterSetBlob>>"/>
<class name="edm::StdArray<short, 4>"/>
+<class name="edm::StdArray<unsigned short, 11>"/>
</lcgdict> that are needed do store using QIE11dataArray = edm::StdArray<uint16_t, QIE11DigiCollection::MAXSAMPLES + Flavor1::HEADER_WORDS>;
using QIE10dataArray = edm::StdArray<uint16_t, HBHEDataFrame::MAXSAMPLES + Flavor5::HEADER_WORDS>; defined in Could you comment if you see any issues with that, or could you sign for @cms-sw/core-l2 this PR and its 14.0.x backport (#45324) ? |
@cms-sw/core-l2 @cms-sw/pdmv-l2 |
@smuzaffar |
+core core chages in DataFormats/Common/src/classes_def.xml i.e adding new dict for |
Thanks Shahzad. |
@cms-sw/pdmv-l2 |
+1 |
merge |
def customizeHLTforAlpakaPFSoA(process): | ||
|
||
# avoid the conversion from SoA to legacy to SoA for the HCAL rechits | ||
process.hltParticleFlowRecHitHBHESoA.producers[0].src = 'hltHbheRecoSoA' |
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.
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.
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.
@fwyzard thank you.
does #45484 work for you ?
I think so. Martin was also reporting problems related to the Hcal local reco part of the customization concerning hltTowerMakerForAllSerialSync
. Apparently the check at the top
if not hasattr(process, 'HLTDoLocalHcalSequence'): |
does not cover all the use cases.
But why do we care about these customisations ? |
I agree and this will be the case! But before I was just checking & testing things by applying the ALPAKA customisation to ALL subtables, and it ONLY worked with the GRun one, not with any of the others (HIon,PRef, ...) |
In the long term yes, but: |
Old versions of the GRun menu should already work, though ? |
Yes, but only those. |
Well, I don't see any reason why we should want to apply a customisation intended for the GRun physics menu to configurations that are 1. obsolete, and 2. not physics menus. If STORM has any specific example of why it would be needed, please explain it. Otherwise, as far as I'm concerned there is not need to maintain or modify these customisations any further. |
Nothing directly comes to mind, but a use case might appear in future. Also I think it's dangerous to keep potentially broken customizations accessible to users
I appreciate your lack of will to amend this any further. We'll take care of that ourselves. |
PR description:
This PR port the CUDA implementation of Hcal Local Reconstruction (Mahi) to using Alpaka.
Custom SoA data structure used in CUDA for HCAL condition data and rechits are replaced with PortableCollection.
The current Alpaka implementation aims at reproducing the results from the CUDA implementation, no algorithmic changes are made.
There are 4 main pieces involved in the migration:
hcalDigisProducerPortable
): Convert CPU digis into SoA formatMahi.dev.cc
)HcalRecHitSoAToLegacy
)More details on code design are presented in the recent HLT GPU development meetings:
https://indico.cern.ch/event/1350955/
https://indico.cern.ch/event/1350953/
https://indico.cern.ch/event/1350952/
https://indico.cern.ch/event/1230377/
https://indico.cern.ch/event/1230374/
PR validation:
Alpaka GPU and CPU rechit energies are validated with slightly modified workflow 12434.523 (ttbar simulation).
More validation comparisons are being worked on.