IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 29, 2024, 4:02:56 PM (19 months ago)
Author:
eugene
Message:

set freeLevel for inputs to CELL so data can be freed after readout loop; change API to set the dataLevel and freeLevel to specific values (no user option); plug a mem leak (free zerors); free input readout data after each cell is done

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-ppmerge-20241229/ppMerge/src/ppMergeLoop.c

    r42764 r42776  
    3939    bool haveVariances = psMetadataLookupBool(&mdok, arguments, "INPUTS.VARIANCES"); // Do we have variances?
    4040
    41     psArray *inputs = ppMergeFileDataLevel(config, "PPMERGE.INPUT", PM_FPA_LEVEL_READOUT); // Input images
    42     psArray *masks = NULL, *variances = NULL; // Input masks and variances
    43     if (haveMasks) {
    44         masks = ppMergeFileDataLevel(config, "PPMERGE.INPUT.MASK", PM_FPA_LEVEL_READOUT);
    45     }
    46     if (haveVariances) {
    47         variances = ppMergeFileDataLevel(config, "PPMERGE.INPUT.VARIANCE", PM_FPA_LEVEL_READOUT);
    48     }
     41    psArray *inputs    = ppMergeFileDataLevel(config, "PPMERGE.INPUT"); // Input images
     42    psArray *masks     = haveMasks ? ppMergeFileDataLevel(config, "PPMERGE.INPUT.MASK") : NULL; // Input masks
     43    psArray *variances = haveVariances ? ppMergeFileDataLevel(config, "PPMERGE.INPUT.VARIANCE") : NULL; // Input variances
    4944
    5045    int nThreads = psMetadataLookupS32 (&mdok, arguments, "NTHREADS");
     
    135130    psString darkNorm = psMetadataLookupStr(&mdok, arguments, "DARK.NORM"); ///< Dark normalisation
    136131
    137 
    138132    if (!ppMergeFileActivate(config, PPMERGE_FILES_ALL, true)) {
    139133        psError(PS_ERR_UNKNOWN, false, "Unable to activate files.");
     
    152146    }
    153147
    154 
    155148    // Average concepts across inputs
    156149    {
     
    180173        {
    181174            psList *inChips = psListAlloc(NULL);
    182             for (int i=0; i < numFiles; i++) {
     175            for (int i = 0; i < numFiles; i++) {
    183176                pmChip *chip = pmFPAviewThisChip(view, ((pmFPAfile *)inputs->data[i])->fpa);
    184177                psListAdd(inChips, PS_LIST_TAIL, chip);
     
    193186
    194187        pmCell *outCell;                ///< Cell of interest
    195 
    196         // XXX TEST : force a single loop
    197         // outCell = pmFPAviewNextCell(view, outFPA, 1); {
    198188
    199189        while ((outCell = pmFPAviewNextCell(view, outFPA, 1))) {
     
    305295                psAbort("Should never get here.");
    306296            }
     297            // XXX EAM : for testing purposes
     298            fprintf (stderr, "after pmDarkCombinePrepare / pmReadoutCombinePrepare:\n");
     299            psMemStats(true, NULL, NULL);
    307300
    308301            // Read input data by chunks
     
    320313                    break;
    321314                }
     315
     316               
    322317
    323318                // Start a job
     
    357352                      // call: pmDarkCombine(outCell, fileGroup->readouts, iter, rej, maskVal);
    358353                      if (!psThreadJobAddPending(job)) {
    359                         //                          goto ERROR;
    360                         // continue; // I don't care.
     354                        // CZW commented this out with a note that this was needed to allow ppMerge to work even if some inputs are invalid.
     355                        // EAM thinks pmDarkCombine will only return FALSE if there is a programming or setup error (see pmDark.c:pmDarkCombine)
     356                        // if so, we should raise an error here.
     357                        // goto ERROR;
    361358                      }
    362359                      break;
     
    400397
    401398            psFree(fileGroups);
    402             //            psFree(zeros);
    403399
    404400            // XXX eventually need to keep both the shutter and the pattern, as we do with dark
     
    541537            }
    542538
     539            // free the data used by the input files (we need to do the work ourselves)
     540            for (int i = 0; i < numFiles; i++) {
     541                if (!ppMergeFileFreeInput(config, view, i)) {
     542                    psError(PS_ERR_UNKNOWN, false, "Unable to open file %d", i);
     543                    goto ERROR;
     544                }
     545            }
     546
    543547            psFree(outRO);
    544548            cellNum++;
     
    547551                goto ERROR;
    548552            }
     553
     554            pmFPAfileIOList (config);
    549555        }
    550556
     
    564570    psFree(variances);
    565571    psFree(stats);
     572    psFree(zeros);
    566573    return true;
    567574
     
    573580    psFree(variances);
    574581    psFree(stats);
     582    psFree(zeros);
    575583    return false;
    576584}
Note: See TracChangeset for help on using the changeset viewer.