Build: #2 was successful Changes by Rui Xue <rx.astro@gmail.com>

Stages & jobs

  1. Default Stage

  2. Test

Build result summary

Details

Completed
Queue duration
< 1 second
Duration
40 minutes
Labels
None
Revision
049063b153369316d393bd385dcd32548597da0c
Total tests
696
Successful since
#1 ()

Tests

Code commits

Author Commit Message Commit date
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

Jira issues

IssueDescriptionStatus
Unknown Issue TypeCAS-14758Could not obtain issue details from Jira
Unknown Issue TypeCAS-14759Could not obtain issue details from Jira
Unknown Issue TypeCAS-14761Could not obtain issue details from Jira

Shared artifacts

Artifact File size
ManyLinux228 Casatestutils 144 KB
ManyLinux228 Python 3.12 Tool wheel 75 MB