TICLGeom: parallelize the geometry SoA build with tbb::parallel_for - #51659
Conversation
Fill the per-cell columns with tbb::parallel_for instead of a serial loop. The running silicon and scint block counters are replaced by the arithmetic block-local index (i - nBarrel, i - nBarrel - nSilicon), valid from the [barrel|silicon|scint] rawDetId ordering, so every iteration writes disjoint rows and RecHitTools is only read. The HGCal fill of 6.08M cells drops from 2844 ms to 332 ms at 8 threads; the closure test is unchanged.
|
cms-bot internal usage |
|
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-51659/50525
|
|
A new Pull Request was created by @felicepantaleo for master. It involves the following packages:
@Moanwar, @cmsbuild, @jfernan2, @mandrenguyen, @srimanob can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
|
type ngt |
|
type performance-improvements |
|
@cmsbuild please test |
|
+1 Size: This PR adds an extra 24KB to repository Comparison SummarySummary:
|
|
@smuzaffar just checking: the tests are run in multithreaded jobs, right? |
No @felicepantaleo , by default tests are run non-threaded ( otherwise dqm comparison shows a lot of differences). If you want to run relvals in threaded mode then use |
|
enable threading |
|
@cmsbuild please test |
|
-1 Failed Tests: RelVals RelVals-THREADING Failed RelValsFailed RelVals-THREADING
|
|
@felicepantaleo |
|
@cmsbuild please test |
|
-1 Failed Tests: RelVals RelVals-THREADING Failed RelValsFailed RelVals-THREADING
|
|
@felicepantaleo Cross-posting the latest TICLGeom failure here: |
|
@cmsbuild please test |
|
+1 Size: This PR adds an extra 16KB to repository Comparison SummarySummary:
|
|
+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. @mandrenguyen, @ftenchini, @sextonkennedy (and backports should be raised in the release meeting by the corresponding L2) |
|
@cmsbuild please test
|
|
+1 Size: This PR adds an extra 16KB to repository Comparison SummarySummary:
AMD_MI300X Comparison SummarySummary:
AMD_W7900 Comparison SummarySummary:
NVIDIA_H100 Comparison SummarySummary:
NVIDIA_L4 Comparison SummarySummary:
NVIDIA_L40S Comparison SummarySummary:
NVIDIA_T4 Comparison SummarySummary:
Max Memory Comparisons exceeding threshold NVIDIA_H100@cms-sw/core-l2 , I found 1 workflow step(s) with memory usage exceeding the error threshold: Expand to see workflows ...
Max Memory Comparisons exceeding threshold NVIDIA_L4@cms-sw/core-l2 , I found 1 workflow step(s) with memory usage exceeding the error threshold: Expand to see workflows ...
Max Memory Comparisons exceeding threshold NVIDIA_T4@cms-sw/core-l2 , I found 1 workflow step(s) with memory usage exceeding the error threshold: Expand to see workflows ...
|
|
+1 |
Fill the per-cell columns with
tbb::parallel_forinstead of a serial loop. The running silicon and scint block counters are replaced by the arithmetic block-local index(i - nBarrel, i - nBarrel - nSilicon)so every iteration writes disjoint rows and RecHitTools is only read. The HGCal fill of 6.08M cells drops from 2844 ms to 332 ms using 8 threads without any difference in the output SoA.