Goal
Get ShapePipe running end-to-end on Nibi over a handful of P3 tiles — the first real run on data. This is deliberately small: the point is to stand up the container, wire the pipeline to our pre-staged data, get a valid shape catalogue out the far end, and measure how long a tile actually takes and how it parallelizes — so we can size the full P3 run realistically. Second issue on the First run on data (Nibi) milestone, following #801.
What's already in place (from #801)
P3 data is staged locally in /project/def-mjhudson/unions-wl/ (see its README.md):
tiles/ — 1268 P3 coadd images + weights (detection layer)
exposures/ — 1180 unique single exposures, image+weight+flag (measurement layer; downloading)
So the run can consume everything off local disk — no CADC calls needed during processing.
Setup tasks
Scope decisions for run 1
- PSFEx, not MCCD — simpler, better-trodden for a first validation. MCCD (the UNIONS-WL production model) is a later run.
- ~10 tiles — a big enough chunk to see per-tile timing spread, throughput scaling, and a first failure rate, while still finishing comfortably on one node.
- SMP / joblib on one node — tiles are independent, so ShapePipe fans them across workers within the node. That's all the parallelism this run needs; MPI / multi-node is a throughput lever for the full run, with nothing to add here.
What we're measuring
- Wall-time per tile, and where it goes across stages (ngmix shape measurement is expected to dominate).
- Throughput scaling with
SMP_BATCH_SIZE (cores) — tiles are independent, so total run time should scale ~linearly with cores; this run calibrates the unit cost.
- Peak memory per tile.
- Failure rate across the ~10 tiles — how many complete cleanly vs. error out, and why.
- A valid
final_cat shape catalogue as the "it works end-to-end" artifact.
Open questions
- Do our staged P3 filenames match the CFIS DR6
INPUT_FILE_PATTERNs, or do the patterns need editing?
- Audit the full set of input data products a run needs beyond tiles + exposures — star catalogues / star masks for
mask, auxdir/ contents, any PSF/validation inputs — and confirm we have them (and whether any reintroduce a CADC dependency). To be nailed down in a follow-up comment.
- Nibi has no ShapePipe reference config (candide is the documented cluster) — the sbatch header needs porting, not copy-paste.
— Claude (Fable) on behalf of Cail
Goal
Get ShapePipe running end-to-end on Nibi over a handful of P3 tiles — the first real run on data. This is deliberately small: the point is to stand up the container, wire the pipeline to our pre-staged data, get a valid shape catalogue out the far end, and measure how long a tile actually takes and how it parallelizes — so we can size the full P3 run realistically. Second issue on the First run on data (Nibi) milestone, following #801.
What's already in place (from #801)
P3 data is staged locally in
/project/def-mjhudson/unions-wl/(see itsREADME.md):tiles/— 1268 P3 coadd images + weights (detection layer)exposures/— 1180 unique single exposures, image+weight+flag (measurement layer; downloading)So the run can consume everything off local disk — no CADC calls needed during processing.
Setup tasks
apptainer pullthe runtime image (build fromdevelop, not the stale v1.0.1 tag), caching off$HOME:export APPTAINER_CACHEDIR=/project/def-mjhudson/unions-wl/.apptainer apptainer pull /project/def-mjhudson/unions-wl/shapepipe-runtime.sif \ docker://ghcr.io/cosmostat/shapepipe:develop-runtimeshapepipe(develop) for theexample/cfis/configs +auxdir/.config_tile_Git_vos.iniandconfig_exp_Gie_vos.ini, setRETRIEVE = symlinkandINPUT_PATH→/project/def-mjhudson/unions-wl/{tiles,exposures}. VerifyINPUT_FILE_PATTERN/INPUT_FILE_EXTmatch our staged filenames (CFIS.XXX.YYY.r.fits/.r.weight.fits.fz; exposuresNNNNNNNp.fits.fz+.weight/.flag).tile_numbers.txtwith the 2–4 chosen tiles.example/pbs/candide_smp.shfor Nibi (partition,--account=def-mjhudson,--cpus-per-task, real--time), with[EXECUTION] MODE = smpand[JOB] SMP_BATCH_SIZE= cpus. Bind the clone at an identical path (--bind "$SPDIR:$SPDIR") so config paths resolve in/out of the container.get_images→find_exposures→get_images(exp)→split_exp→merge_headers→mask→sextractor→setools→psfex/psfex_interp→vignetmaker→spread_model→vignetmaker→ngmix→merge_sep→make_cat— and confirm afinal_catFITS appears.Scope decisions for run 1
What we're measuring
SMP_BATCH_SIZE(cores) — tiles are independent, so total run time should scale ~linearly with cores; this run calibrates the unit cost.final_catshape catalogue as the "it works end-to-end" artifact.Open questions
INPUT_FILE_PATTERNs, or do the patterns need editing?mask,auxdir/contents, any PSF/validation inputs — and confirm we have them (and whether any reintroduce a CADC dependency). To be nailed down in a follow-up comment.— Claude (Fable) on behalf of Cail