Add possibility to run CKF Tracking on multiple threads#17
Add possibility to run CKF Tracking on multiple threads#17tmadlener merged 80 commits intoMuonColliderSoft:mainfrom
Conversation
It's weird that this didn't pull with the rest of the changes ...
Necessary due to acts-project/acts#3975
This only makes things build with v32 and v43, there are certainly versions in between where different changes would be necessary. (Potentially incomplete) list of related ACTS PRs: - acts-project/acts#3337 - acts-project/acts#4005
Fix Geo Mapping
Removed ROOT, EDM4hep, and Gaudi from the list of acts.
- Modified ACTSAlgBase to update geometry configuration - Added buildsub/, installsub/, and setup.sh to gitignore
|
The steering files for these new, parallel algs can be found here. |
|
Hi @samf25, we've merged the PR with the previous set of updates into the key4hep/main. We'll then merge this into our main, and start the PR to propagate the changes upstream. |
|
@madbaron Merge conflicts resolved. I believe I caught all the places where @tmadlener's changes to the |
|
There was a bug in the |
tmadlener
left a comment
There was a problem hiding this comment.
Unless you have made any changes to any of the files in the data directory these can be removed again. Since key4hep#25 these are all downloaded via cmake in order to not pollute the git repo too much.
Otherwise this looks good to me. There are a few minor things that could be done. I have also added a few questions for clarification.
| hit1.getEDep() == hit2.getEDep() && hit1.getEDepError() == hit2.getEDepError() && | ||
| hit1.getPosition() == hit2.getPosition(); | ||
| } | ||
| bool hitEqual(const edm4hep::TrackerHit& hit1, const edm4hep::TrackerHit& hit2) { return hit1 == hit2; } |
There was a problem hiding this comment.
It looks like there is only one use of this in track_equal. Since the workaround is not necessary we could remove it entirely and simply use a std::find there, I think.
tmadlener
left a comment
There was a problem hiding this comment.
I just had another look, a few minor things below. The main thing that is blocking me from merging at the moment is the presence of all the data files. Did you change any of those?
| for (size_t i = 0; i < spacePointGroups.size(); ++i) { | ||
| parallelSeedingAndTracking(tbb::blocked_range<size_t>(i, i + 1)); | ||
| } |
There was a problem hiding this comment.
Out of curiosity, does this impose a penalty timewise on the sequential execution compared to not using tbb? I suppose there would at least be some slowdown due to all the (needless) synchronization primitives that now also happen on a single thread, but I am not sure if this would be visible in our case since we do so much other stuff.
Co-authored-by: Thomas Madlener <thomas.madlener@desy.de>
|
As for the |
|
The files are already automatically downloaded: k4ActsTracking/data/CMakeLists.txt Lines 21 to 36 in fd2f114 this has been introduced in the upstream and then merged back here. |
|
Ah great, so I should just clear out all the files in the |
|
Clear out the full |
I made a number of changes to the algorithms in k4ActsTracking.
tbb's threading for the beefy for loop. This took the runtime (with BIB) from ~1000s to 0.5141s.