-
Notifications
You must be signed in to change notification settings - Fork 14
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
updates to get module maps used as ES products jointly with CMSSW #355
Conversation
729b6d9
to
d72d5da
Compare
now rebased |
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.
Not sure how ready this was but I took a look and have just a small question here. More questions on the CMSSW side...
SDL/LST.cc
Outdated
void SDL::LST::eventSetup() { | ||
static std::once_flag mapsLoaded; | ||
std::call_once(mapsLoaded, &SDL::LST::loadMaps, this); | ||
std::call_once(mapsLoaded, &SDL::LST::loadMaps); | ||
|
||
TString path = get_absolute_path_after_check_file_exists( | ||
TString::Format("%s/data/centroid_CMSSW_12_2_0_pre2.txt",TrackLooperDir_.Data()).Data()); | ||
TString::Format("%s/data/centroid_CMSSW_12_2_0_pre2.txt",trackLooperDir().Data()).Data()); | ||
static std::once_flag modulesInited; | ||
std::call_once(modulesInited, SDL::initModules, path); | ||
} |
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.
Should this be deleted, now that the maps are loaded in the ESProducer? Or has it stayed until we know that the ESRpoducer method works and will be deleted in the future?
10fe919
to
1fd4b59
Compare
@ariostas
I was expecting a proposed patch file with changes (what's usually done with cmssw setup).
which are not very useful/practical. |
I got rid of it by adding |
Hi @slava77, the Regarding the patch file, I thought that it would be the same amount of work to apply the patch file vs to just run |
we should at least have the commands needed to run clang-format and clang-tidy in the readme. |
do you mean that we should accept that all linter actions will fail? I noticed also in the logs of the linter the following:
is it instead the reason for failing the linter action (instead of the |
/run cmssw from-CMSSW_13_3_0_pre3_LST_X/modules-dev |
/run standalone |
I don't see any activity in the CI frame after my /run commands. |
@slava77 oh sorry, that's a bug I have to fix. What happened was that I set it so that only one job runs at a time, to prevent us from accidentally running multiple iterations of the same thing. Try writing both commands on a single comment (in separate lines), and then let's check if they run. |
The /run action actually came back to me in https://github.com/SegmentLinking/TrackLooper/actions/runs/7399973283/job/20132579034; although I still do not see it in this PR thread. It came back with what's probably from
not sure what I was supposed to pass instead to pick up SegmentLinking/cmssw#16 the errors from the CI are pretty hard to decode |
@ariostas Are the plots meant to have no reference? It would be much better to have a comparison |
/run standalone |
/run standalone |
/run cmssw from-CMSSW_13_3_0_pre3_LST_X/modules-dev |
@ariostas |
@slava77 the linter workflow is triggered differently and github uses the workflow file present in the current branch. So you would have to rebase, but it's probably not worth it. |
I think the cmssw test will fail because I haven't updated the recipe to use lst_headers.xml. Now that I think about it I could have updated it without breaking the action for the current default cmssw branch. It's an easy fix so I'll do it tonight. |
There was a problem while building and running with CMSSW. The logs can be found here. |
The PR was built and ran successfully with CMSSW. Here are some plots. OOTB All TracksThe full set of validation and comparison plots can be found here. |
@@ -1,7 +1,8 @@ | |||
#include "Event.h" | |||
|
|||
SDL::modules* SDL::modulesInGPU = new SDL::modules(); | |||
SDL::modulesBuffer<Acc>* SDL::modulesBuffers = new SDL::modulesBuffer<Acc>(devAcc); | |||
SDL::modulesBuffer<SDL::Dev>* SDL::modulesBuffers = new SDL::modulesBuffer<SDL::Dev>(devAcc); |
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 see you changed Acc to SDL::Dev here, but you should do this for all of our objects to be consistent I think. I don't know if this matters since the performance plots look unchanged and this uses SDL::Dev while all the other Buffers still have Acc, but good to be consistent.
Same in all of the header files that define a buffer, to remove confusion we should move the "Acc" named templated parameter to Dev so it's clear what we pass in. See the random examples below.
Line 319 in 25e08e7
miniDoubletsBuffers = new SDL::miniDoubletsBuffer<Acc>(nTotalMDs, nLowerModules, devAcc, queue); |
Lines 96 to 99 in 25e08e7
template <typename TAcc> | |
struct miniDoubletsBuffer : miniDoublets { | |
Buf<TAcc, unsigned int> nMemoryLocations_buf; | |
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 don't know if this matters since the performance plots look unchanged and this uses SDL::Dev while all the other Buffers still have Acc, but good to be consistent.
right, Acc or Dev does not seem to matter for the buffers at the final implementation level (after all the template parsing is done); however code exposed to CMSSW needs to be templated from a Dev.
Dev seems to be more appropriate based on Alpaka docs for a buffer https://alpaka.readthedocs.io/en/latest/_images/structure_assoc.png
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 left a couple of comments, mostly for my own understanding, rather than real actions. I understand that there are two open issues with this PR:
- It has a conflict.
- We should replace
Acc
->SDL::Dev
I will approve and merge when 1) is resolved, while 2) will be followed up in a new PR (do we need an issue or is it going to be followed up soon?).
@@ -18,12 +18,12 @@ namespace SDL { | |||
|
|||
ALPAKA_FN_ACC ALPAKA_FN_INLINE void rmPixelTripletFromMemory(struct SDL::pixelTriplets& pixelTripletsInGPU, | |||
unsigned int pixelTripletIndex) { | |||
pixelTripletsInGPU.isDup[pixelTripletIndex] = 1; | |||
pixelTripletsInGPU.isDup[pixelTripletIndex] = true; |
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.
Out of curiosity, why this change? Did it cause an issue? Is this defined as a bool variable?
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.
this was from a clang check; a part missed in #356
SDL/LST.cc
Outdated
exit(2); | ||
void loadMaps() { | ||
// Module orientation information (DrDz or phi angles) | ||
auto const& tldir = trackLooperDir(); |
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.
What's the point of defining this, if trackLooperDir()
is used almost everywhere in the following? Was it meant to be a short version but then it was forgotten?
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.
removed now
…r/TAcc ; add modulesBuffersES as pointer to const (ES) module data not owned by SDL
/run standalone |
done now in eca2c59 |
The PR was built and ran successfully in standalone mode. Here are some of the comparison plots. The full set of validation and comparison plots can be found here. |
The PR was built and ran successfully with CMSSW. Here are some plots. OOTB All TracksThe full set of validation and comparison plots can be found here. |
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.
This is out of @slava77's way
coupled with updates in SegmentLinking/cmssw#16
LST::loadMaps
to a free function to avoid making an instance of LST where it's not neededLST::loadAndFillES
method to be called by an CMSSW ES producer