Alice Weekly Meeting: Software for Hardware Accelerators / PDP-SRC

Zoom Meeting ID
David Rohr
Useful links
Join via phone
Zoom URL
    • 11:00 AM 11:20 AM
      Discussion 20m
      Speakers: David Rohr (CERN), Ole Schmidt (CERN)

      Color code: (critical, news during the meeting: green, news from this week: blue, news from last week: purple, no news: black)

      High priority Framework issues:

      • Fix dropping lifetime::timeframe for good: Still pending: problem with CCDB objects getting lost by DPL leading to "Dropping lifetime::timeframe", saw at least one occation during SW validation.
        • Tried to work on this, but so far didn't even manage to reproduce it locally in any reasonable way. Worst case we must debug it online.
      • Start / Stop / Start: 2 problems on O2 side left:
          • All processes are crashing randomly (usually ~2 out of >10k) when restarting. Stack trace hints to FMQ.
          • TPC ITS matching QC crashing accessing CCDB objects. Not clear if same problem as above, or a problem in the task itself.
      • Stabilize calibration / fix EoS: New scheme: No news
      • Problem with DPL getting stuck waiting for oldestPossibleTimeframe: fixed.
      • Fix problem with ccdb-populator: no idea yet, no ETA.
      • Memory leak in DPL internal-ccdb-backend - no progress.


      Other framework tickets:

      • We need to make progress with these tickets at some point...
      • : Should find a better way to detect whether we are an input-proxy.
      • TOF problem with receiving condition in tof-compressor:
      • Grafana metrics: Might want to introduce additional rate metrics that subtract the header overhead to have the pure payload: low priority.
      • Backpressure reporting when there is only 1 input channel: no progress:
      • Stop entire workflow if one process segfaults / exits unexpectedly. Tested again in January, still not working despite some fixes.
      • : FIX in PR, but has side effects which must also be fixed.
      • : Cannot override debug severity for tpc-tracker
      • : Improve DebugGUI information
      • : Better error message (or a message at all) when input missing
      • : Problem with 2 devices of the same name
      • : Usage of valgrind in external terminal: The testcase is currently causing a segfault, which is an unrelated problem and must be fixed first. Reproduced and investigated by Giulio.
      • Run getting stuck when too many TFs are in flight.
      • Reduce obsolete DPL metrics
      • Do not use string comparisons to derrive processor type, since is user-defined.
      • Found a reproducible crash (while fixing the memory leak) in the TOF compressed-decoder at workflow termination, if the wrong topology is running. Not critical, since it is only at the termination, and the fix of the topology avoids it in any case. But we should still understand and fix the crash itself. A reproducer is available.
      • Support in DPL GUI to send individual START and STOP commands.
      • Problem I mentioned last time with non-critical QC tasks and DPL CCDB fetcher is real. Will need some extra work to solve it. Otherwise non-critical QC tasks will stall the DPL chain when they fail.
      • DPL sending SHM metrics for all devices, not only input proxy:
      • Some improvements to ease debugging:


      Global calibration topics:

      • TPC IDC and SAC workflow issues to be reevaluated with new O2 at restart of data taking. Cannot reproduce the problems any more.


      Async reconstruction

      • Remaining oscilation problem: GPUs get sometimes stalled for a long time up to 2 minutes. Checking 2 things:
        • does the situation get better without GPU monitoring? --> Inconclusive
        • We can use increased GPU processes priority as a mitigation, but doesn't fully fix the issue.
      • ḾI100 GPU stuck problem will only be addressed after AMD has fixed the operation with the latest official ROCm stack.


      EPN major topics:

      • Fast movement of nodes between async / online without EPN expert intervention.
        • 2 goals I would like to set for the final solution:
          • It should not be needed to stop the SLURM schedulers when moving nodes, there should be no limitation for ongoing runs at P2 and ongoing async jobs.
          • We must not lose which nodes are marked as bad while moving.
      • Interface to change SHM memory sizes when no run is ongoing. Otherwise we cannot tune the workflow for both Pb-Pb and pp:
        • Lubos to provide interface to querry current EPN SHM settings - ETA July 2023, Status?
      • Improve DataDistribution file replay performance, currently cannot do faster than 0.8 Hz, cannot test MI100 EPN in Pb-Pb at nominal rate, and cannot test pp workflow for 100 EPNs in FST since DD injects TFs too slowly. NO ETA
      • DataDistribution distributes data round-robin in absense of backpressure, but it would be better to do it based on buffer utilization, and give more data to MI100 nodes. Now, we are driving the MI50 nodes at 100% capacity with backpressure, and then only backpressured TFs go on MI100 nodes. This increases the memory pressure on the MI50 nodes, which is anyway a critical point.
      • TfBuilders should stop in ERROR when they lose connection.


      Other EPN topics:


      Raw decoding checks:

      • Add additional check on DPL level, to make sure firstOrbit received from all detectors is identical, when creating the TimeFrame first orbit.


      Full system test issues:

      • Problem generating new FST dataset, since simulation is crashing. Investigating with Sandro and Ivana.


      Topology generation:

      • Should test to deploy topology with DPL driver, to have the remote GUI available.
        • DPL driver needs to implement FMQ state machine. Postponed until YETS issues solved.


      QC / Monitoring / InfoLogger updates:

      • Ole opened a PR to O2 to send CTF sizes, QC task to be added for monitoring them.
        • Next step is to send raw data sizes as well.


      AliECS related topics:

      • Extra env var field still not multi-line by default.


      GPU ROCm / compiler topics:

      • Found new HIP internal compiler error when compiling without optimization: -O0 make the compilation fail with unsupported LLVM intrinsic. Disappeared with ROCm 6.x
      • Found a new miscompilation with -ffast-math enabled in looper folllowing, for now disabled -ffast-math. Seems fixed with ROCm >= 5.5.
      • Must create new minimal reproducer for compile error when we enable LOG(...) functionality in the HIP code. Verified that this is not a bug in our code but internal compiler problem. AMD has a minimal reproducer.
      • Found another compiler problem with template treatment found by Ruben. Same problem as the previous one.
      • Debugging the calibration, debug output triggered another internal compiler error in HIP compiler. Same problem as the previous one.
      • Most likely update of ROCm / OS to a stable RPM release only possible after Pb-Pb 2024.
      • List of open issues with AMD:
        • Application crashing with ROCm >= 6.x.
        • Bug report abort non-working synchronization of kernel-call and DMA transfer on MI100.
        • GPUs stalling (long stalls up to 24h in async, generally short stalls up to 1 min also in sync.)
        • Want to use an official RPM version, not a custom patched version.
        • Still waiting for a proper fix for the register-spilling problem, instead of using a workaround.
        • Need a proper fix for internal compiler error from the template code example.


      TPC GPU Processing

      • Bug in TPC QC with MC embedding, TPC QC does not respect sourceID of MC labels, so confuses tracks of signal and of background events.
      • New problem with bogus values in TPC fast transformation map still pending. Sergey is investigating, but waiting for input from Alex.
      • Status of cluster error parameterizations
        • Still missing: usage of all cluster error parts during seeding.
        • No progress yet on newly requested debug streamers.
        • Porting to stable-async postponed, since not clear whether it will actually be used.
      • TPC processing performance regression:
        • O2/dev:
            • Total time: 4.695s, Track Fit Time 1.147s, Seeding Time 1.241s
          • O2/dev with commit from 4.3. reverted:
            • Total time 4.351s, Track Fit Time 1.089, Seeding Time 1.008s
          • For reference: before introduction of the V-Shape map:
            • Total time 3.8421s (didn't measure individual times)
          • O2/dev with scaling factors hard-coded to 0 (essentially using one single transformation map without any scaling):
            • Total time 3.093 Track Fit Time 0.682s Seeding Time 0.429s
        • Proposed 3 ideas to speed up the map access:
          1. We merge the maps on-the-fly to one combined map, and query only one map.
          2. We could add plenty of #ifdef in the code, to make sure that for online purposes all the code for the non-static map is not seen.
          3. We could try to optimize the code to make it easier for the compiler.
      • Meeting to discuss TPCFastTransform with TPC next Thursday.


      General GPU Processing

      • Porting CUDA features to HIP:
        • Last missing feature: per-kernel compilation
    • 11:20 AM 11:25 AM
      TRD Tracking 5m
      Speaker: Ole Schmidt (CERN)
    • 11:25 AM 11:30 AM
      TPC ML Clustering 5m
      Speaker: Christian Sonnabend (CERN, Heidelberg University (DE))

      Updates since last week

      • Neural networks: Tried different classification networks for IROC and OROC's separately, but no significant performance increase could be observed
      • Training data production: Added transformations from (row, pad, time) to (X, Y, Z) (details below)


      Momentum vector estimation via track propagation (below: exaggerated view by scaling up the momentum vectors)



      To add this to the training data:

      1. Run the tracking on ideal clusters
      2. Read back tracking clusters (subset of ideal clusters) and tracks
      3. Run regular chain of training data (digit-ideal assignment, occupancy tagging, etc.)
      4. After assignment is done: 
        1. For every tracking cluster check in the tpc sector map if this ideal cluster can be found again (which should always happen)
        2. Save association of the tracking cluster with the ideal cluster that was matched
      5. When creating training data get assigned momentum data of the ideal cluster


      This is a major step: I can now assign e.g. track momentum (but also e.g. track position when crossing a pad-row) to the digit maxima. This can easily also be applied on real data (instead of ideal clusters)! Like this we can also train the networks (in the future) on real data using the position where a track passes a pad-row (once I get the transformation right).  

    • 11:30 AM 11:35 AM
      ITS Tracking 5m
      Speaker: Matteo Concas (CERN)
      • Bug when running with gpu-wf is fixed
      • Working on forwarding some arguments to the gpu-wf that currently are not configKeVals
        • Mean vertex: declare as required input
        • Async/Sync/Cosmics -> configKeyValues perhaps?
      • Discontinuing the gpu-wf option in its-reco-wf <- redundant
    • 11:35 AM 11:55 AM
      TPC Track Model Decoding on GPU 20m
      Speaker: Gabriele Cimador (Universita e INFN Trieste (IT))

      Testing CPU versions on EPN (original vs new) on 5.3*10^7 clusters TF

      • Original version: uses direct OpenMP directive
      • New version: OpenMP called from general framework


      Mean exec time (ms) First kernel Second kernel
      Original 166,27 17.54
      New 171.37 80.19