Build: #1 failed
Job: Build and Package Many Linux 2.28 Python 3.12 was successful
Code commits
Casa6
-
Rui Xue <rx.astro@gmail.com> 826c31e116218750e0d4bd9668df49796f903cfe
CAS-14756: Align image tile shape to MPI channel boundaries and disable explicit file locks
The default casacore TiledShape could produce tiles that are
small spatially but span many spectral channels. When mpicasa workers
write to disjoint channel ranges of shared .residual/.psf/.sumwt images,
their writes collide on the same physical disk tiles, causing Lustre
table.lock contention that serializes all I/O (observed: ~22.5h on a
29,861-channel dataset).
SIImageStore::buildImage():
- When chnchnks > 1 in itsMiscInfo, override PagedImage tile shape with
TiledShape(min(Nx,256), min(Ny,256), Npol, Nchan/chnchnks), ensuring
each MPI worker's channel range maps to independent tile blocks.
- Serial mode (chnchnks absent or 1) falls back to the original
PagedImage(shape, csys, name) constructor with casacore defaults.
CubeMajorCycleAlgorithm:
- subImageStore(): disable sumwt.lock(FileLocker::Write) — sumwt is only
read for its shape, never written here.
- getSubImage(): disable im->lock(FileLocker::Read) and im->unlock() —
data is copied into a TempImage; no persistent write occurs.
- writeBackToFullImage(): disable LatticeLocker and im->unlock() —
workers write non-overlapping SubImage channel slices; tile alignment
guarantees no shared disk blocks.
Anticipate no metadata race risk: workers never call setImageInfo/setMiscInfo on
disk images. All normalization operates on in-memory TempImage copies.
Beam sets are serialized via MPI returnRec and merged by Rank 0 after
all workers complete.