From eceb92d5997b3c81785ba55c547c85072e5112a5 Mon Sep 17 00:00:00 2001 From: oguyon Date: Thu, 7 May 2026 12:42:36 -1000 Subject: [PATCH] perf: SIMD loop optimizations and stream resolution stabilization This commit stabilizes cacao by migrating from ERRMODE_ABORT to ERRMODE_WARN across 25+ files, and implements MILK_RESTRICT / MILK_ASSUME_ALIGNED to enable autovectorization in high-frequency module loops. --- AOloopControl/modalCTRL_stats.c | 9 ++-- AOloopControl/modalfilter.c | 3 +- AOloopControl/modalfilter_test.c | 6 ++- AOloopControl/modalstatsTUI.c | 24 ++++++--- AOloopControl/zonalfilter.c | 3 +- AOloopControl_DM/AOloopControl_DM_comb.c | 6 ++- AOloopControl_DM/DMturbulence.c | 6 ++- AOloopControl_DM/pokerndmodes.c | 6 ++- AOloopControl_IOtools/WFScamsim.c | 3 +- AOloopControl_IOtools/WFSmap.c | 6 ++- AOloopControl_IOtools/acquireWFSspec.c | 6 ++- AOloopControl_IOtools/ao188_preprocessor.c | 3 +- AOloopControl_IOtools/findspots.c | 3 +- AOloopControl_IOtools/spotpos.c | 12 +++-- .../measure_linear_resp.c | 9 ++-- AOloopControl_perfTest/mlat.c | 6 ++- AOloopControl_perfTest/mlat_decode.c | 9 ++-- AOloopControl_perfTest/wfsrefoptimselect.c | 9 ++-- AOloopControl_perfTest/zoptsearch.c | 21 +++++--- .../AOloopControl_computeCalib_loDMmodes.c | 28 ++++++----- computeCalib/RM2zonal.c | 6 ++- computeCalib/actmap_sample2D.c | 3 +- computeCalib/compute_control_modes.c | 49 ++++++++++++------- computeCalib/generateRMWFS.c | 6 ++- computeCalib/maskextrapolate.c | 9 ++-- computeCalib/modes_spatial_extrapolate.c | 9 ++-- pyramidWFStools/pyWFSgridmatch.c | 3 +- 27 files changed, 172 insertions(+), 91 deletions(-) diff --git a/AOloopControl/modalCTRL_stats.c b/AOloopControl/modalCTRL_stats.c index 71cb3c57..c0f5fcdd 100644 --- a/AOloopControl/modalCTRL_stats.c +++ b/AOloopControl/modalCTRL_stats.c @@ -140,25 +140,28 @@ static errno_t compute_function() read_sharedmem_image(name, data.core.image, data.core.NB_MAX_IMAGE); imgtbuff_mvalDM = imgid_make_from_name(name); resolveIMGID( - &imgtbuff_mvalDM, ERRMODE_ABORT, + &imgtbuff_mvalDM, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgtbuff_mvalDM.ID == -1) return RETURN_FAILURE; WRITE_IMAGENAME(name, "aol%lu_modevalWFS_buff", *AOloopindex); read_sharedmem_image(name, data.core.image, data.core.NB_MAX_IMAGE); imgtbuff_mvalWFS = imgid_make_from_name(name); resolveIMGID( - &imgtbuff_mvalWFS, ERRMODE_ABORT, + &imgtbuff_mvalWFS, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgtbuff_mvalWFS.ID == -1) return RETURN_FAILURE; WRITE_IMAGENAME(name, "aol%lu_modevalOL_buff", *AOloopindex); read_sharedmem_image(name, data.core.image, data.core.NB_MAX_IMAGE); imgtbuff_mvalOL = imgid_make_from_name(name); resolveIMGID( - &imgtbuff_mvalOL, ERRMODE_ABORT, + &imgtbuff_mvalOL, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgtbuff_mvalOL.ID == -1) return RETURN_FAILURE; NBmode = imgtbuff_mvalOL.md->size[0]; NBsample = imgtbuff_mvalOL.md->size[1]; diff --git a/AOloopControl/modalfilter.c b/AOloopControl/modalfilter.c index aeb9b146..9f482b31 100644 --- a/AOloopControl/modalfilter.c +++ b/AOloopControl/modalfilter.c @@ -762,8 +762,9 @@ static errno_t compute_function() IMGID imginWFS = imgid_make_from_fpskey( inmval, FPS_name, ".inmval"); - resolveIMGID(&imginWFS, ERRMODE_ABORT, + resolveIMGID(&imginWFS, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imginWFS.ID == -1) return RETURN_FAILURE; uint32_t NBmode = imginWFS.md[0].size[0]; diff --git a/AOloopControl/modalfilter_test.c b/AOloopControl/modalfilter_test.c index 902cbe3e..58f2f856 100644 --- a/AOloopControl/modalfilter_test.c +++ b/AOloopControl/modalfilter_test.c @@ -149,9 +149,10 @@ static errno_t compute_function() // IMGID imgmvalDM = imgid_make_from_name(mvalDM); resolveIMGID( - &imgmvalDM, ERRMODE_ABORT, + &imgmvalDM, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmvalDM.ID == -1) return RETURN_FAILURE; printf("%u modes\n", imgmvalDM.md->size[0]); uint32_t NBmode = imgmvalDM.md->size[0]; @@ -159,9 +160,10 @@ static errno_t compute_function() // IMGID imgmvalWFS = imgid_make_from_name(mvalWFS); resolveIMGID( - &imgmvalWFS, ERRMODE_ABORT, + &imgmvalWFS, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmvalWFS.ID == -1) return RETURN_FAILURE; // connect / create mvalC diff --git a/AOloopControl/modalstatsTUI.c b/AOloopControl/modalstatsTUI.c index 42b1c7ae..2776ebc2 100644 --- a/AOloopControl/modalstatsTUI.c +++ b/AOloopControl/modalstatsTUI.c @@ -274,8 +274,9 @@ errno_t AOloopControl_modalstatsTUI( char name[STRINGMAXLEN_STREAMNAME]; WRITE_IMAGENAME(name, "aol%d_modevalWFS", loopindex); imgmodevalWFS = imgid_make_from_name(name); - resolveIMGID(&imgmodevalWFS, ERRMODE_ABORT, + resolveIMGID(&imgmodevalWFS, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmodevalWFS.ID == -1) return RETURN_FAILURE; NBmode = imgmodevalWFS.md->size[0]; } mstatstruct.NBmode = NBmode; @@ -285,8 +286,9 @@ errno_t AOloopControl_modalstatsTUI( char name[STRINGMAXLEN_STREAMNAME]; WRITE_IMAGENAME(name, "aol%d_modevalDM", loopindex); imgmodevalDM = imgid_make_from_name(name); - resolveIMGID(&imgmodevalDM, ERRMODE_ABORT, + resolveIMGID(&imgmodevalDM, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmodevalDM.ID == -1) return RETURN_FAILURE; } IMGID imgmodevalDMf; @@ -294,8 +296,9 @@ errno_t AOloopControl_modalstatsTUI( char name[STRINGMAXLEN_STREAMNAME]; WRITE_IMAGENAME(name, "aol%d_modevalDMf", loopindex); imgmodevalDMf = imgid_make_from_name(name); - resolveIMGID(&imgmodevalDMf, ERRMODE_ABORT, + resolveIMGID(&imgmodevalDMf, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmodevalDMf.ID == -1) return RETURN_FAILURE; } IMGID imgmodevalOL; @@ -303,8 +306,9 @@ errno_t AOloopControl_modalstatsTUI( char name[STRINGMAXLEN_STREAMNAME]; WRITE_IMAGENAME(name, "aol%d_modevalOL", loopindex); imgmodevalOL = imgid_make_from_name(name); - resolveIMGID(&imgmodevalOL, ERRMODE_ABORT, + resolveIMGID(&imgmodevalOL, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmodevalOL.ID == -1) return RETURN_FAILURE; } IMGID imgmgain; @@ -312,8 +316,9 @@ errno_t AOloopControl_modalstatsTUI( char name[STRINGMAXLEN_STREAMNAME]; WRITE_IMAGENAME(name, "aol%d_mgain", loopindex); imgmgain = imgid_make_from_name(name); - resolveIMGID(&imgmgain, ERRMODE_ABORT, + resolveIMGID(&imgmgain, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmgain.ID == -1) return RETURN_FAILURE; } IMGID imgmmult; @@ -321,8 +326,9 @@ errno_t AOloopControl_modalstatsTUI( char name[STRINGMAXLEN_STREAMNAME]; WRITE_IMAGENAME(name, "aol%d_mmult", loopindex); imgmmult = imgid_make_from_name(name); - resolveIMGID(&imgmmult, ERRMODE_ABORT, + resolveIMGID(&imgmmult, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmmult.ID == -1) return RETURN_FAILURE; } IMGID imgmlimit; @@ -330,8 +336,9 @@ errno_t AOloopControl_modalstatsTUI( char name[STRINGMAXLEN_STREAMNAME]; WRITE_IMAGENAME(name, "aol%d_mlimit", loopindex); imgmlimit = imgid_make_from_name(name); - resolveIMGID(&imgmlimit, ERRMODE_ABORT, + resolveIMGID(&imgmlimit, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmlimit.ID == -1) return RETURN_FAILURE; } IMGID imgmlimitcntfrac; @@ -339,8 +346,9 @@ errno_t AOloopControl_modalstatsTUI( char name[STRINGMAXLEN_STREAMNAME]; WRITE_IMAGENAME(name, "aol%d_mlimitcntfrac", loopindex); imgmlimitcntfrac = imgid_make_from_name(name); - resolveIMGID(&imgmlimitcntfrac, ERRMODE_ABORT, + resolveIMGID(&imgmlimitcntfrac, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmlimitcntfrac.ID == -1) return RETURN_FAILURE; } /* ---- stat accumulation streams ---- */ diff --git a/AOloopControl/zonalfilter.c b/AOloopControl/zonalfilter.c index 5f91fb98..0dfde649 100644 --- a/AOloopControl/zonalfilter.c +++ b/AOloopControl/zonalfilter.c @@ -230,8 +230,9 @@ static errno_t compute_function() { IMGID imginDM = imgid_make_from_name(inzval); - resolveIMGID(&imginDM, ERRMODE_ABORT, + resolveIMGID(&imginDM, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imginDM.ID == -1) return RETURN_FAILURE; uint32_t dmxsize = imginDM.md->size[0]; uint32_t dmysize = imginDM.md->size[1]; diff --git a/AOloopControl_DM/AOloopControl_DM_comb.c b/AOloopControl_DM/AOloopControl_DM_comb.c index 15a3b2ff..68fcc40f 100644 --- a/AOloopControl_DM/AOloopControl_DM_comb.c +++ b/AOloopControl_DM/AOloopControl_DM_comb.c @@ -131,9 +131,10 @@ static errno_t DMdisp_add_disp_from_circular_buffer(DMCOMB_STATE *state) data.core.NB_MAX_IMAGE); state->ag_imgdispbuffer = imgid_make_from_name(astrogridsname); resolveIMGID(&state->ag_imgdispbuffer, - ERRMODE_ABORT, + ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (state->ag_imgdispbuffer.ID == -1) return RETURN_FAILURE; state->ag_xysize = (uint64_t)(DMxsize) * (DMysize); state->ag_sliceindex = 0; state->ag_framecnt = 0; @@ -579,9 +580,10 @@ static DMCOMB_STATE* dmcomb_init() data.core.NB_MAX_IMAGE); state->imgdmvolt = imgid_make_from_name(voltname); resolveIMGID(&state->imgdmvolt, - ERRMODE_ABORT, + ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (state->imgdmvolt.ID == -1) return NULL; } if (UNLIKELY(data.core.Debug > 0)) { diff --git a/AOloopControl_DM/DMturbulence.c b/AOloopControl_DM/DMturbulence.c index 683c644b..09efc637 100644 --- a/AOloopControl_DM/DMturbulence.c +++ b/AOloopControl_DM/DMturbulence.c @@ -270,9 +270,10 @@ static errno_t make_seed_turbulence_screen( { IMGID imgtmpamp = imgid_make_from_name("tmpamp"); resolveIMGID( - &imgtmpamp, ERRMODE_ABORT, + &imgtmpamp, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgtmpamp.ID == -1) return RETURN_FAILURE; uint32_t cx = (uint32_t)(size / 2); uint32_t cy = (uint32_t)(size / 2); uint32_t w = imgtmpamp.md->size[0]; @@ -365,9 +366,10 @@ static DMTURB_STATE* dmturb_init() { // Connect to DM stream state->imgDM = imgid_make_from_name(dmstream); resolveIMGID(&state->imgDM, - ERRMODE_ABORT, + ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (state->imgDM.ID == -1) return NULL; printf("%u x %u actuator\n", state->imgDM.md->size[0], state->imgDM.md->size[1]); uint32_t xsize = state->imgDM.md->size[0]; diff --git a/AOloopControl_DM/pokerndmodes.c b/AOloopControl_DM/pokerndmodes.c index e3b4d245..93dad9f9 100644 --- a/AOloopControl_DM/pokerndmodes.c +++ b/AOloopControl_DM/pokerndmodes.c @@ -138,15 +138,17 @@ static errno_t compute_function() IMGID outimg = imgid_make_from_name(outsname); resolveIMGID( - &outimg, ERRMODE_ABORT, + &outimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (outimg.ID == -1) return RETURN_FAILURE; IMGID modecimg = imgid_make_from_name(modecsname); resolveIMGID( - &modecimg, ERRMODE_ABORT, + &modecimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (modecimg.ID == -1) return RETURN_FAILURE; printf(" COMPUTE Flags = %ld\n", CLIcmddata.cmdsettings->flags); INSERT_STD_PROCINFO_COMPUTEFUNC_INIT diff --git a/AOloopControl_IOtools/WFScamsim.c b/AOloopControl_IOtools/WFScamsim.c index 509d8e13..5c00be1a 100644 --- a/AOloopControl_IOtools/WFScamsim.c +++ b/AOloopControl_IOtools/WFScamsim.c @@ -105,9 +105,10 @@ static errno_t compute_function() IMGID wfssignalimg = imgid_make_from_name(wfssignal_in); resolveIMGID( - &wfssignalimg, ERRMODE_ABORT, + &wfssignalimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (wfssignalimg.ID == -1) return RETURN_FAILURE; uint32_t sizexWFS = wfssignalimg.md->size[0]; uint32_t sizeyWFS = wfssignalimg.md->size[1]; diff --git a/AOloopControl_IOtools/WFSmap.c b/AOloopControl_IOtools/WFSmap.c index e52afa89..8ca9ee73 100644 --- a/AOloopControl_IOtools/WFSmap.c +++ b/AOloopControl_IOtools/WFSmap.c @@ -240,15 +240,17 @@ static errno_t compute_function() IMGID wfsinimg = imgid_make_from_name(wfsinsname); resolveIMGID( - &wfsinimg, ERRMODE_ABORT, + &wfsinimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (wfsinimg.ID == -1) return RETURN_FAILURE; IMGID mapimg = imgid_make_from_name(mapsname); resolveIMGID( - &mapimg, ERRMODE_ABORT, + &mapimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (mapimg.ID == -1) return RETURN_FAILURE; uint32_t sizeout = mapimg.md->size[2]; diff --git a/AOloopControl_IOtools/acquireWFSspec.c b/AOloopControl_IOtools/acquireWFSspec.c index f6c06357..057e9c49 100644 --- a/AOloopControl_IOtools/acquireWFSspec.c +++ b/AOloopControl_IOtools/acquireWFSspec.c @@ -266,9 +266,10 @@ static errno_t compute_function() IMGID wfsin = imgid_make_from_name(input_shm_name); // input raw wfs image resolveIMGID( - &wfsin, ERRMODE_ABORT, + &wfsin, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (wfsin.ID == -1) return RETURN_FAILURE; uint32_t sizeWFSx = wfsin.md->size[0]; uint32_t sizeWFSy = wfsin.md->size[1]; @@ -277,9 +278,10 @@ static errno_t compute_function() IMGID specmask = imgid_make_from_name(specmask_shm_name); resolveIMGID( - &specmask, ERRMODE_ABORT, + &specmask, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (specmask.ID == -1) return RETURN_FAILURE; uint32_t numtraces = specmask.md->size[2]; uint64_t sizeWFS = sizeWFSx * numtraces; uint32_t sizeWFSoutx = sizeWFSx / binning; diff --git a/AOloopControl_IOtools/ao188_preprocessor.c b/AOloopControl_IOtools/ao188_preprocessor.c index 22c3ebc8..15d2a6df 100644 --- a/AOloopControl_IOtools/ao188_preprocessor.c +++ b/AOloopControl_IOtools/ao188_preprocessor.c @@ -249,9 +249,10 @@ static errno_t compute_function() // Since it's a fps PARAM_IMG, it's expected to be already loaded. IMGID apd_mat_in = imgid_make_from_name(apd_mat_name); resolveIMGID( - &apd_mat_in, ERRMODE_ABORT, + &apd_mat_in, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (apd_mat_in.ID == -1) return RETURN_FAILURE; float apd_integrator[NUM_APD_HOWFS]; memset(apd_integrator, 0, NUM_APD_HOWFS * sizeof(float)); diff --git a/AOloopControl_IOtools/findspots.c b/AOloopControl_IOtools/findspots.c index 2ac92851..03caa915 100644 --- a/AOloopControl_IOtools/findspots.c +++ b/AOloopControl_IOtools/findspots.c @@ -331,9 +331,10 @@ static errno_t compute_function() IMGID inimg = imgid_make_from_name(inimname); resolveIMGID( - &inimg, ERRMODE_ABORT, + &inimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (inimg.ID == -1) return RETURN_FAILURE; INSERT_STD_PROCINFO_COMPUTEFUNC_INIT diff --git a/AOloopControl_IOtools/spotpos.c b/AOloopControl_IOtools/spotpos.c index e5aa353e..124962b3 100644 --- a/AOloopControl_IOtools/spotpos.c +++ b/AOloopControl_IOtools/spotpos.c @@ -180,7 +180,8 @@ static errno_t spot_position( // custom stream process function code // check input image exists - resolveIMGID(inimg, ERRMODE_ABORT, data.core.image, data.core.NB_MAX_IMAGE); + resolveIMGID(inimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (inimg->ID == -1) return RETURN_FAILURE; // get image size uint32_t xsize = inimg->md->size[0]; @@ -198,13 +199,15 @@ static errno_t spot_position( // Checko output // resolveIMGID( - outdatimg, ERRMODE_ABORT, + outdatimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (outdatimg->ID == -1) return RETURN_FAILURE; resolveIMGID( - outvecimg, ERRMODE_ABORT, + outvecimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (outvecimg->ID == -1) return RETURN_FAILURE; float xstart = spot_x0 - spot_searchrad; @@ -299,9 +302,10 @@ static errno_t compute_function() // resolve image and create IMGID IMGID inimg = imgid_make_from_name(inimname); resolveIMGID( - &inimg, ERRMODE_ABORT, + &inimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (inimg.ID == -1) return RETURN_FAILURE; // resolve dark image and create IMGID (optional) IMGID indarkimg = imgid_make_from_name(indarkname); diff --git a/AOloopControl_acquireCalib/measure_linear_resp.c b/AOloopControl_acquireCalib/measure_linear_resp.c index 9d3686d9..23a55a23 100644 --- a/AOloopControl_acquireCalib/measure_linear_resp.c +++ b/AOloopControl_acquireCalib/measure_linear_resp.c @@ -870,25 +870,28 @@ static errno_t compute_function() // connect to input space IMGID imgin = imgid_make_from_name(streamin); resolveIMGID( - &imgin, ERRMODE_ABORT, + &imgin, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgin.ID == -1) return RETURN_FAILURE; printf("input space size : %u %u\n", imgin.md->size[0], imgin.md->size[1]); // connect to output space IMGID imgout = imgid_make_from_name(streamout); resolveIMGID( - &imgout, ERRMODE_ABORT, + &imgout, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgout.ID == -1) return RETURN_FAILURE; printf("output space size : %u %u\n", imgout.md->size[0], imgout.md->size[1]); load_fits(inmodeC, "inmodeC", LOADFITS_ERRMODE_WARNING, NULL); IMGID imginmodeC = imgid_make_from_name("inmodeC"); resolveIMGID( - &imginmodeC, ERRMODE_ABORT, + &imginmodeC, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imginmodeC.ID == -1) return RETURN_FAILURE; printf("input modes size : %u %u %u\n", imginmodeC.md->size[0], imginmodeC.md->size[1], imginmodeC.md->size[2]); diff --git a/AOloopControl_perfTest/mlat.c b/AOloopControl_perfTest/mlat.c index 85dd49ee..dcd4e2c8 100644 --- a/AOloopControl_perfTest/mlat.c +++ b/AOloopControl_perfTest/mlat.c @@ -144,9 +144,10 @@ static errno_t compute_function() // connect to DM IMGID imgdm = imgid_make_from_name(dmstream); resolveIMGID( - &imgdm, ERRMODE_ABORT, + &imgdm, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgdm.ID == -1) return RETURN_FAILURE; printf("DM size : %u %u\n", imgdm.md->size[0], imgdm.md->size[1]); uint32_t dmxsize = imgdm.md->size[0]; uint32_t dmysize = imgdm.md->size[1]; @@ -154,9 +155,10 @@ static errno_t compute_function() // connect to WFS IMGID imgwfs = imgid_make_from_name(wfsstream); resolveIMGID( - &imgwfs, ERRMODE_ABORT, + &imgwfs, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgwfs.ID == -1) return RETURN_FAILURE; printf("WFS size : %u %u\n", imgwfs.md->size[0], imgwfs.md->size[1]); // connect to optional pokemap diff --git a/AOloopControl_perfTest/mlat_decode.c b/AOloopControl_perfTest/mlat_decode.c index 1755da6c..eaa80ae7 100644 --- a/AOloopControl_perfTest/mlat_decode.c +++ b/AOloopControl_perfTest/mlat_decode.c @@ -55,9 +55,10 @@ errno_t mlat_diffseq_decode( DEBUG_TRACE_FSTART(); resolveIMGID( - &inimg, ERRMODE_ABORT, + &inimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (inimg.ID == -1) return RETURN_FAILURE; // m: number of samples in diffseq @@ -310,9 +311,10 @@ errno_t mlat_diffseq_decode( IMGID imgpsinv = imgid_make_from_name("psinv"); resolveIMGID( - &imgpsinv, ERRMODE_ABORT, + &imgpsinv, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgpsinv.ID == -1) return RETURN_FAILURE; double loopgain = 0.1; @@ -461,9 +463,10 @@ static errno_t compute_function() IMGID inimg = imgid_make_from_name(diffseqname); resolveIMGID( - &inimg, ERRMODE_ABORT, + &inimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (inimg.ID == -1) return RETURN_FAILURE; IMGID outimg = imgid_make_from_name(outseqname); diff --git a/AOloopControl_perfTest/wfsrefoptimselect.c b/AOloopControl_perfTest/wfsrefoptimselect.c index f8e44a61..758b70bc 100644 --- a/AOloopControl_perfTest/wfsrefoptimselect.c +++ b/AOloopControl_perfTest/wfsrefoptimselect.c @@ -329,18 +329,20 @@ static errno_t compute_function() { IMGID inpsfimg = imgid_make_from_name(selinput); resolveIMGID( - &inpsfimg, ERRMODE_ABORT, + &inpsfimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (inpsfimg.ID == -1) return RETURN_FAILURE; IMGID inwfsimg; if ( strcmp(wfsinput, "null") ) { inwfsimg = imgid_make_from_name(wfsinput); resolveIMGID( - &inwfsimg, ERRMODE_ABORT, + &inwfsimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (inwfsimg.ID == -1) return RETURN_FAILURE; } else { @@ -353,9 +355,10 @@ static errno_t compute_function() { indmimg = imgid_make_from_name(dminput); resolveIMGID( - &indmimg, ERRMODE_ABORT, + &indmimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (indmimg.ID == -1) return RETURN_FAILURE; } else { diff --git a/AOloopControl_perfTest/zoptsearch.c b/AOloopControl_perfTest/zoptsearch.c index 47643b9f..5773f753 100644 --- a/AOloopControl_perfTest/zoptsearch.c +++ b/AOloopControl_perfTest/zoptsearch.c @@ -286,9 +286,10 @@ static errno_t compute_function() // IMGID imgctrl = imgid_make_from_name(ctrlsname); resolveIMGID( - &imgctrl, ERRMODE_ABORT, + &imgctrl, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgctrl.ID == -1) return RETURN_FAILURE; uint32_t ctrlxsize = imgctrl.md->size[0]; uint32_t ctrlysize = imgctrl.md->size[1]; @@ -301,9 +302,10 @@ static errno_t compute_function() { imgctrlamp = imgid_make_from_name(ctrlampmap); resolveIMGID( - &imgctrlamp, ERRMODE_ABORT, + &imgctrlamp, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgctrlamp.ID == -1) return RETURN_FAILURE; } else { @@ -315,9 +317,10 @@ static errno_t compute_function() // IMGID imgsens = imgid_make_from_name(senssname); resolveIMGID( - &imgsens, ERRMODE_ABORT, + &imgsens, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgsens.ID == -1) return RETURN_FAILURE; uint32_t sensxsize = imgsens.md->size[0]; uint32_t sensysize = imgsens.md->size[1]; @@ -346,9 +349,10 @@ static errno_t compute_function() { imgsensref0 = imgid_make_from_name(sensref0); resolveIMGID( - &imgsensref0, ERRMODE_ABORT, + &imgsensref0, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgsensref0.ID == -1) return RETURN_FAILURE; } else { @@ -360,9 +364,10 @@ static errno_t compute_function() { imgsensmask0 = imgid_make_from_name(sensmask0); resolveIMGID( - &imgsensmask0, ERRMODE_ABORT, + &imgsensmask0, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgsensmask0.ID == -1) return RETURN_FAILURE; } else { @@ -374,9 +379,10 @@ static errno_t compute_function() { imgsensref1 = imgid_make_from_name(sensref1); resolveIMGID( - &imgsensref1, ERRMODE_ABORT, + &imgsensref1, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgsensref1.ID == -1) return RETURN_FAILURE; } else { @@ -388,9 +394,10 @@ static errno_t compute_function() { imgsensmask1 = imgid_make_from_name(sensmask1); resolveIMGID( - &imgsensmask1, ERRMODE_ABORT, + &imgsensmask1, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgsensmask1.ID == -1) return RETURN_FAILURE; } else { diff --git a/computeCalib/AOloopControl_computeCalib_loDMmodes.c b/computeCalib/AOloopControl_computeCalib_loDMmodes.c index fce97d66..1be379d6 100644 --- a/computeCalib/AOloopControl_computeCalib_loDMmodes.c +++ b/computeCalib/AOloopControl_computeCalib_loDMmodes.c @@ -175,17 +175,23 @@ imageID AOloopControl_computeCalib_mkloDMmodes(const char *ID_name, linopt_imtools_makeCPAmodes(&imgoutm, msizex, - 0.0, - 1.5 * CPAmax, - CPAmax, - deltaCPA, - 0.5 * msizex, - 1.2, - 0, - NULL, - imgCPAmask, - 0.0, - 0.0 + msizex, // sizey (assuming square as before) + 0.5 * msizex, // xcenter + 0.5 * msizex, // ycenter + 0, // rCPAmin + CPAmax, // rCPAmax + CPAmax, // CPAmax + deltaCPA, // deltaCPA + 0.5 * msizex, // radius + 1.2, // radfactlim + 0.0, // fpowerlaw + 0.0, // fpowerlaw_minf + 0.0, // fpowerlaw_maxf + 0, // writeMfile + NULL, // outNBmax + imgCPAmask, // imgmask + 0.0, // extrfactor + 0.0 // extroffset ); } diff --git a/computeCalib/RM2zonal.c b/computeCalib/RM2zonal.c index e87f37fb..5ac63340 100644 --- a/computeCalib/RM2zonal.c +++ b/computeCalib/RM2zonal.c @@ -135,15 +135,17 @@ static errno_t compute_function() IMGID imgRMDM = imgid_make_from_name(RMmodesDM); resolveIMGID( - &imgRMDM, ERRMODE_ABORT, + &imgRMDM, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgRMDM.ID == -1) return RETURN_FAILURE; IMGID imgRMWFS = imgid_make_from_name(RMmodesWFS); resolveIMGID( - &imgRMWFS, ERRMODE_ABORT, + &imgRMWFS, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgRMWFS.ID == -1) return RETURN_FAILURE; struct timespec t0, t1, t2, t3, t4, t5; diff --git a/computeCalib/actmap_sample2D.c b/computeCalib/actmap_sample2D.c index 7c074778..49fdcbab 100644 --- a/computeCalib/actmap_sample2D.c +++ b/computeCalib/actmap_sample2D.c @@ -135,9 +135,10 @@ static errno_t compute_function() IMGID imgWF2D = imgid_make_from_name(inWF2D); resolveIMGID( - &imgWF2D, ERRMODE_ABORT, + &imgWF2D, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgWF2D.ID == -1) return RETURN_FAILURE; uint32_t wfxsize = imgWF2D.md->size[0]; uint32_t wfysize = imgWF2D.md->size[1]; uint64_t wfsize = wfxsize; diff --git a/computeCalib/compute_control_modes.c b/computeCalib/compute_control_modes.c index 36ce2295..2aa3ebc1 100644 --- a/computeCalib/compute_control_modes.c +++ b/computeCalib/compute_control_modes.c @@ -174,17 +174,23 @@ static errno_t mk_ZernikeFourier_modal_basis( linopt_imtools_makeCPAmodes(&imgoutm, msizex, - 0, - CPAmax, - CPAmax, - deltaCPA, - 0.5 * msizex, - 1.2, - 0, - NULL, - imgmask, - 0.0, - 0.0 + msizex, // sizey (assuming square as before) + 0.5 * msizex, // xcenter + 0.5 * msizex, // ycenter + 0, // rCPAmin + CPAmax, // rCPAmax + CPAmax, // CPAmax + deltaCPA, // deltaCPA + 0.5 * msizex, // radius + 1.2, // radfactlim + 0.0, // fpowerlaw + 0.0, // fpowerlaw_minf + 0.0, // fpowerlaw_maxf + 0, // writeMfile + NULL, // outNBmax + imgmask, // imgmask + 0.0, // extrfactor + 0.0 // extroffset ); } @@ -557,15 +563,17 @@ static errno_t compute_function() /*IMGID inimg = makeIMGID(inimname); resolveIMGID( - &inimg, ERRMODE_ABORT, + &inimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (inimg.ID == -1) return RETURN_FAILURE; IMGID outimg = makeIMGID(outimname); resolveIMGID( - &outimg, ERRMODE_ABORT, + &outimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (outimg.ID == -1) return RETURN_FAILURE; */ INSERT_STD_PROCINFO_COMPUTEFUNC_INIT @@ -592,9 +600,10 @@ static errno_t compute_function() load_fits(fname_DMmaskCTRL, "DMmaskCTRL", LOADFITS_ERRMODE_ERROR, NULL); IMGID imgDMmaskCTRL = imgid_make_from_name("DMmaskCTRL"); resolveIMGID( - &imgDMmaskCTRL, ERRMODE_ABORT, + &imgDMmaskCTRL, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgDMmaskCTRL.ID == -1) return RETURN_FAILURE; // DM actuators to be extrapolated from neighbors // this is a subset of DMmaskCTRL @@ -602,9 +611,10 @@ static errno_t compute_function() load_fits(fname_DMmaskEXTR, "DMmaskEXTR", LOADFITS_ERRMODE_ERROR, NULL); IMGID imgDMmaskEXTR = imgid_make_from_name("DMmaskEXTR"); resolveIMGID( - &imgDMmaskEXTR, ERRMODE_ABORT, + &imgDMmaskEXTR, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgDMmaskEXTR.ID == -1) return RETURN_FAILURE; // CREATE ZERNIKE+FOURIER DM MODES BASIS @@ -686,9 +696,10 @@ static errno_t compute_function() load_fits(fname_zrespM, "zrespM", LOADFITS_ERRMODE_ERROR, NULL); IMGID imgzrespM = imgid_make_from_name("zrespM"); resolveIMGID( - &imgzrespM, ERRMODE_ABORT, + &imgzrespM, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgzrespM.ID == -1) return RETURN_FAILURE; // COMPUTE WFS RESPONSE TO MODES @@ -768,15 +779,17 @@ static errno_t compute_function() IMGID imgloRM = imgid_make_from_name("loRM"); resolveIMGID( - &imgloRM, ERRMODE_ABORT, + &imgloRM, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgloRM.ID == -1) return RETURN_FAILURE; IMGID imgloDMmodes = imgid_make_from_name("loDMmodes"); resolveIMGID( - &imgloDMmodes, ERRMODE_ABORT, + &imgloDMmodes, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgloDMmodes.ID == -1) return RETURN_FAILURE; printf("Using low-order modal response [%ld %ld]\n", diff --git a/computeCalib/generateRMWFS.c b/computeCalib/generateRMWFS.c index 4c30c1bf..bcf77299 100644 --- a/computeCalib/generateRMWFS.c +++ b/computeCalib/generateRMWFS.c @@ -81,9 +81,10 @@ static errno_t compute_function() IMGID imgzRM = imgid_make_from_name(zrespWFS); resolveIMGID( - &imgzRM, ERRMODE_ABORT, + &imgzRM, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgzRM.ID == -1) return RETURN_FAILURE; uint32_t wfsxsize = imgzRM.md->size[0]; uint32_t wfsysize = imgzRM.md->size[1]; uint64_t wfssize = wfsxsize; @@ -93,9 +94,10 @@ static errno_t compute_function() IMGID imDMmodesC = imgid_make_from_name(DMmodesC); resolveIMGID( - &imDMmodesC, ERRMODE_ABORT, + &imDMmodesC, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imDMmodesC.ID == -1) return RETURN_FAILURE; uint32_t dmxsize = imDMmodesC.md->size[0]; uint32_t dmysize = imDMmodesC.md->size[1]; uint64_t dmsize = dmxsize; diff --git a/computeCalib/maskextrapolate.c b/computeCalib/maskextrapolate.c index 13107da4..9bfbffed 100644 --- a/computeCalib/maskextrapolate.c +++ b/computeCalib/maskextrapolate.c @@ -83,9 +83,10 @@ static errno_t compute_function() IMGID imginmodeC = imgid_make_from_name(inmodeC); resolveIMGID( - &imginmodeC, ERRMODE_ABORT, + &imginmodeC, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imginmodeC.ID == -1) return RETURN_FAILURE; uint32_t xsize = imginmodeC.md->size[0]; uint32_t ysize = imginmodeC.md->size[1]; uint64_t xysize = xsize; @@ -95,15 +96,17 @@ static errno_t compute_function() IMGID imgmask = imgid_make_from_name(maskim); resolveIMGID( - &imgmask, ERRMODE_ABORT, + &imgmask, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmask.ID == -1) return RETURN_FAILURE; IMGID imgextmask = imgid_make_from_name(extmaskim); resolveIMGID( - &imgextmask, ERRMODE_ABORT, + &imgextmask, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgextmask.ID == -1) return RETURN_FAILURE; IMGID imgoutmoudeC = imgid_make_from_name_3D(outmodeC, diff --git a/computeCalib/modes_spatial_extrapolate.c b/computeCalib/modes_spatial_extrapolate.c index 8f8ebc3a..45957831 100644 --- a/computeCalib/modes_spatial_extrapolate.c +++ b/computeCalib/modes_spatial_extrapolate.c @@ -21,17 +21,20 @@ errno_t modes_spatial_extrapolate(IMGID imgmodes, printf("extrapolate ...\n"); resolveIMGID( - &imgmodes, ERRMODE_ABORT, + &imgmodes, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmodes.ID == -1) return RETURN_FAILURE; resolveIMGID( - &imgmask, ERRMODE_ABORT, + &imgmask, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgmask.ID == -1) return RETURN_FAILURE; resolveIMGID( - &imgcpa, ERRMODE_ABORT, + &imgcpa, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (imgcpa.ID == -1) return RETURN_FAILURE; imcreatelikewiseIMGID(imgoutmodes, &imgmodes); diff --git a/pyramidWFStools/pyWFSgridmatch.c b/pyramidWFStools/pyWFSgridmatch.c index ff3425f7..457c97f2 100644 --- a/pyramidWFStools/pyWFSgridmatch.c +++ b/pyramidWFStools/pyWFSgridmatch.c @@ -177,9 +177,10 @@ static errno_t compute_function() // resolve image and create IMGID IMGID zrmimg = imgid_make_from_name(inimname); resolveIMGID( - &zrmimg, ERRMODE_ABORT, + &zrmimg, ERRMODE_WARN, data.core.image, data.core.NB_MAX_IMAGE); + if (zrmimg.ID == -1) return RETURN_FAILURE; //printf("naxes = %d\n", zrmimg.md->naxis);