Build: #2 was successful

Job: Test Tools Many Linux 2.28 was successful

Stages & jobs

  1. Default Stage

  2. Test

Code commits

Casa6

  • Rui Xue <rx.astro@gmail.com>

    Rui Xue <rx.astro@gmail.com> 049063b153369316d393bd385dcd32548597da0c

    Merge branch 'CAS-14759' into CAS-14761

  • Rui Xue <rx.astro@gmail.com>

    Rui Xue <rx.astro@gmail.com> d0321c271c872398d0eb907c9f835e0f21122d16

    Merge branch 'CAS-14758' into CAS-14761

  • Rui Xue <rx.astro@gmail.com>

    Rui Xue <rx.astro@gmail.com> 41c7dc77b583148c0117cf38598bd91a2884a594 m

    CAS-14759: skip redundant normalizeprimarybeam() for cube+standard
    For the standard gridder with specmode=cube, each worker in
    CubeMajorCycleAlgorithm::task() already normalizes the primary beam
    per-subcube during PSF making and writes the result back to the full
    image. The subsequent master-side normalizeprimarybeam() loop over all
    (pol x chan) planes was therefore redundant and, for a 7500-channel
    8000x8000 cube, accounted for ~31 minutes of wall time after
    "Time for making PSF and PB".

    Changes:
    - Extract the cube+standard guard into isCubeStandard bool for clarity.
    - Skip the normalizeprimarybeam() loop when isCubeStandard is True.
    - makePBCore() is unchanged and still skipped for cube+standard as before.
    - Add a timing log entry "***Time for normalizeprimarybeam: <s> (skipped=<bool>)"
      at INFO3 so the optimisation is observable in tclean logs.

    This path is safe to skip only for standard+cube because mosaicft and
    awproject gridders derive PB from sqrt(weight)/pbmax and require the
    fully-assembled weight image, which is only available on the master
    after all subcubes have been written back.

  • Rui Xue <rx.astro@gmail.com>

    Rui Xue <rx.astro@gmail.com> 4bf5f24bd705f5d4869184c92d846994927cbbe2 m

    CAS-14759: Fix potential lock contention in SIImageStore::makeImageBeamSet
    This commit addresses a performance bottleneck where `tclean` would stall
    for extended periods (often hours) during the initialization and
    re-fitting phases of large spectral cubes with many MPI ranks.

    Within `makeImageBeamSet()`, a `LatticeLocker` read-lock on the PSF image
    was instantiated and subsequently destroyed on every single combined
    channel and polarization iteration. For a 60,000 channel cube, this resulted
    in 60,000 individual, sequential Lustre metadata transactions (lock requests
    and releases) per process.

    The `LatticeLocker` is now hoisted outside the nested loops, allowing the
    process to obtain a single read-lock that persists for the duration of the
    fitting iterations. This condenses millions of filesystem lock updates
    across an MPI cluster down to exactly one, significantly reducing I/O
    synchronization overhead during `mpicasa` execution.

  • Rui Xue <rx.astro@gmail.com>

    Rui Xue <rx.astro@gmail.com> f03ba5194e6eaca95fb699a2fa3cccd2c7658cbf m

    CAS-14758: Optimize image processing by caching tool handles in fill_summary_minor to avoid redundant open/close operations