LST: add LSTGeometry package and associated ESProducer#50679
Conversation
|
cms-bot internal usage |
|
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-50679/48907
|
|
A new Pull Request was created by @ariostas for master. It involves the following packages:
The following packages do not have a category, yet: RecoTracker/LSTGeometry @Martin-Grunewald, @Moanwar, @cmsbuild, @jfernan2, @mandrenguyen, @mmusich, @srimanob can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
|
test parameters:
|
|
@cmsbuild, please test |
|
-1 Failed Tests: UnitTests HLTP2Timing Failed Unit TestsI found 1 errors in the following unit tests: ---> test test-das-selected-lumis had ERRORS Comparison SummarySummary:
Max Memory Comparisons exceeding threshold@cms-sw/core-l2 , I found 17 workflow step(s) with memory usage exceeding the error threshold: Expand to see workflows ...
|
|
Is ~190 MB increase in memory usage expected? |
That seems a bit high, but it's likely. I'll double-check. Either way, it is only temporarily. Most of it is freed once the maps are constructed. |
According to the monitoring the peak memory usage would increase by ~190 MB, and thus freeing it afterwards doesn't help much if the job was killed because of going over the limit. |
|
test parameters:
|
|
@cmsbuild, please test Maybe one round of profiling tests would be worth it. |
Right. This behavior is visible in the So when you
the This analysis does not answer to the question on how |
The Tracer log shows only |
If 1 thread/stream shows "good behavior", I'm wondering if the caching allocator could play a role. The allocator is shared, and if some modules allocate concurrently large temporary buffers, those buffers might end up being held by the caching allocator without being used later in the job. On 1 thread these temporary buffers would be allocated and deallocated serially, and the same large buffer could be used by multiple modules. But this is, of course, pure speculation, and does not explain the role of the existence of |
|
The CachingAllocator hypothesis could be investigated further by comparing the behavior between 1-thread and many-thread cases (on a few events). The debug prints of the CachingAllocator can be enabled with if not hasattr(process, "AlpakaServiceCudaAsync"):
process.load("HeterogeneousCore.AlpakaServices.AlpakaServiceCudaAsync_cfi")
process.AlpakaServiceCudaAsync.verbose = TrueA crude way to see the functions that lead to actual memory allocations would be cmsTraceFunction "cms::alpakatools::CachingAllocator<alpaka::DevCudaRt, alpaka::QueueCudaRtNonBlocking>::allocateBuffer" cmsRun ...(I'm not 100 % sure I got the CachingAllocator template instantiation right, possibly tracing calls to just |
I'm currently recompiling everything after adding <flags CXXFLAGS="-DALPAKA_DISABLE_CACHING_ALLOCATOR -DALPAKA_DISABLE_ASYNC_ALLOCATOR"/>to all the LST build files. I'll see what happens and try using the debug prints. Thanks! |
|
can it be something to do with the number of queues (and subsequently some extra allocations coming per queue)? |
|
In addition to the problems already discussed, now this branch has conflicts that must be resolved. @ariostas |
IIUC Andres was away, expected to be back next week |
Since profiling is still ongoing, this problem was surfaced in #50870 and appears to be a weird clash between CMSSW's |
4e3de58 to
46de12c
Compare
Rebased to fix conflicts. I'll get back to looking into this.
Thank you! I'll see what I can learn from the |
|
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-50679/49455
|
|
Pull request #50679 was updated. @Martin-Grunewald, @Moanwar, @cmsbuild, @jfernan2, @mandrenguyen, @mmusich, @srimanob can you please check and sign again. |


This PR adds a new
RecoTracker/LSTGeometrypackage containing the module map computation used by the LST algorithm. Currently, the maps are pre-computed by the code in https://github.com/SegmentLinking/LSTGeometry and they are stored in https://github.com/cms-data/RecoTracker-LSTCore. This PR allows for the on-the-fly computation of these maps via an ESProducer, ensuring that they stay consistent with the tracker geometry being used.This is the last major task in #46746.
c.c. @slava77