Alice Weekly Meeting: Software for Hardware Accelerators / PDP-SRC (15 May 2024) · Indico

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

Europe/Zurich
Videoconference
ALICE GPU Meeting
Zoom Meeting ID
61230224927
Host
David Rohr
Useful links
Join via phone
Zoom URL
    • 11:00 11:20
      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.
        • Can reproduce this on staging, started to debug. Clearly, DPL drops the timeframe data too early, since it believes the CCDB message won't arrive any more due to incorrect handling / sending of oldestPossibleTimeframe.
      • 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. https://its.cern.ch/jira/browse/O2-4639
          • 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: https://its.cern.ch/jira/browse/O2-4308: Status?
      • Fix problem with ccdb-populator: no idea yet:
        • Ole will try to create a reproducer. Status?
      • Memory leak in DPL internal-ccdb-backend: Fixed.

       

      Other framework tickets:

      • We need to make progress with these tickets at some point...
      • https://github.com/AliceO2Group/AliceO2/pull/12976 : Better DPL backpressure reporting: Should be fixed now, we need to retry at P2 to be sure.
      • TOF problem with receiving condition in tof-compressor: https://alice.its.cern.ch/jira/browse/O2-3681
      • 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: https://alice.its.cern.ch/jira/browse/O2-4237
      • Stop entire workflow if one process segfaults / exits unexpectedly. Tested again in January, still not working despite some fixes. https://alice.its.cern.ch/jira/browse/O2-2710
      • https://alice.its.cern.ch/jira/browse/O2-1900 : FIX in PR, but has side effects which must also be fixed.
      • https://alice.its.cern.ch/jira/browse/O2-2213 : Cannot override debug severity for tpc-tracker
      • https://alice.its.cern.ch/jira/browse/O2-2209 : Improve DebugGUI information
      • https://alice.its.cern.ch/jira/browse/O2-2140 : Better error message (or a message at all) when input missing
      • https://alice.its.cern.ch/jira/browse/O2-2361 : Problem with 2 devices of the same name
      • https://alice.its.cern.ch/jira/browse/O2-2300 : 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.
      • https://its.cern.ch/jira/browse/O2-4759: Run getting stuck when too many TFs are in flight.
      • https://its.cern.ch/jira/browse/O2-4234: Reduce obsolete DPL metrics
      • https://its.cern.ch/jira/browse/O2-4860: Do not use string comparisons to derrive processor type, since DeviceSpec.name 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: https://alice.its.cern.ch/jira/browse/O2-4234
      • Some improvements to ease debugging: https://alice.its.cern.ch/jira/browse/O2-4196 https://alice.its.cern.ch/jira/browse/O2-4195 https://alice.its.cern.ch/jira/browse/O2-4166

       

      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: https://alice.its.cern.ch/jira/browse/EPN-250
        • 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. https://alice.its.cern.ch/jira/browse/EPN-244 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. https://alice.its.cern.ch/jira/browse/EPN-397
      • 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:

      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:

      • CTF/RAW Size monitoring: status?

       

      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.
      • ROCm 6.1 released, have a test node available.
        • Default ROCm 6.1 crashes in the same way as 6.0.
        • There is a new compiler behavior such that we can no longer compiler our code with -O0. Filed a bug report to AMD.
        • Received from AMD instructions to build a custom compiler for 6.1, which fixes the known compiler issues.
          • With this, the standalone benchmark reproducer we gave them for the latest issues seem to be fixed, but it still crashes in the FST with a newer data set.
            • So far, I did not manage to reproduce this crash in any standalone test, so we did not yet file a proper bug report.
        • 6.1 fixes the performance regression we saw with 6.0, and is even ~1% faster than our current setup.

       

      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
        • No progress yet on newly requested debug streamers.
        • Waiting for TPC to check PR with full cluster errors during seeding.

       

      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.
      • Outcome of meeting with TPC:
        • Sergey will implement a new fully flat map, and multiple existing maps will be merged into the new one.
          • This will give optimal performance for both sync and async.
          • It will also remove the memory overhead of having multiple maps in memory per process, since then we can use the flat maps from the SHM.
          • Timescale is ~September.
        • Meanwhile, I will add the possibility to remove the M/V-shape code with run time compilation, which should restore the performance from last November at P2 if we use RTC.

       

      General GPU Processing

      • Pending problems with using GPU RTC at P2:
        • /tmp is inside the slurm container and wiped afterwards. Fixed by using /var/tmp.
        • RTC is started from one of the GPU processes, which has a NUMA pinning to one NUMA domain, thus it uses only half of the CPU cores. Need to extend the CPU pinning for the compilation subprocesses.
        • RTC compiles for the architecturs of the original build, which is currently MI50/MI100, i.e. all nodes compile twice, which takes extra time. Need to add an option to select an architecture, and the topology generation must put in the setting for MI50 / MI100 architectures.
        • AMD compiler leaves stale temp folders, can avoid this by setting $TMPDIR.
        • RTC compilation fails in an online run since headers (e.g. <cmath>) are not found - Not understood yet.
      • O2 GPU code was 1% slower than in standalone test again due to CXX compile flags overriding extra HIP compile flags in the O2 CMake. Fixed.
    • 11:20 11:25
      TRD Tracking 5m
      Speaker: Ole Schmidt (CERN)
    • 11:25 11:30
      TPC ML Clustering 5m
      Speaker: Christian Sonnabend (CERN, Heidelberg University (DE))

      Update on the NN fitting

      • Tried directional fitting of momentum vector: pX/pZ & pY/pZ
        • Did not work as there can be tracks with p/pT ~1  -> pZ is basically 0 -> ratios explode
      • Changed fitting to pX/p, pY/p, pZ/p
        • Improved training quality and convergence behaviour significantly
        • Regained the position resolution comparable to native clusterizer as before with additional momentum vector estimation

       

      • Momentum vector estimation works (somehow I messed up the training in Y and Z though, so need to redo it)

       

       

      Otherwise busy writing some clusterization kernel code and further sw testing for network implementation with GPU backend

    • 11:30 11:35
      ITS Tracking 5m
      Speaker: Matteo Concas (CERN)
      • no GPU update
      • finalising and testing multiROF seeding vertexer
    • 11:35 11:55
      TPC Track Model Decoding on GPU 20m
      Speaker: Gabriele Cimador (Universita e INFN Trieste (IT))