IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 27343


Ignore:
Timestamp:
Mar 18, 2010, 3:59:38 PM (16 years ago)
Author:
Paul Price
Message:

Being more careful to free unused memory, to keep memory footprint as low as possible.

Location:
trunk/ppStack/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppStack/src/ppStackCleanup.c

    r27329 r27343  
    7171    }
    7272
     73    if (!ppStackFilesIterateUp(config)) {
     74        psError(psErrorCodeLast(), false, "Unable to close files.");
     75        return false;
     76    }
     77    ppStackFileActivation(config, PPSTACK_FILES_STACK, false);
     78    ppStackFileActivation(config, PPSTACK_FILES_PHOT, false);
     79
     80    // Ensure files are freed
     81    {
     82        options->outRO->data_exists = false;
     83        options->outRO->parent->data_exists = false;
     84        options->outRO->parent->parent->data_exists = false;
     85        psFree(options->outRO);
     86        options->outRO = NULL;
     87
     88        pmFPAview *view = pmFPAviewAlloc(0);// Pointer into FPA hierarchy
     89        view->chip = view->cell = 0;        // pmFPAviewFreeData doesn't want to deal with readouts
     90        pmFPAfile *jpeg1 = pmFPAfileSelectSingle(config->files, "PPSTACK.OUTPUT.JPEG1", 0); // JPEG file
     91        pmFPAviewFreeData(view, jpeg1);
     92        pmFPAfile *jpeg2 = pmFPAfileSelectSingle(config->files, "PPSTACK.OUTPUT.JPEG2", 0); // JPEG file
     93        pmFPAviewFreeData(view, jpeg2);
     94        pmFPAfile *phot = NULL;         // Photometry file
     95        if (options->photometry) {
     96            phot = pmFPAfileSelectSingle(config->files, "PSPHOT.INPUT", 0); // Photometry file
     97            pmFPAviewFreeData(view, phot);
     98        }
     99
     100        view->readout = 0;
     101        pmReadout *ro1 = pmFPAviewThisReadout(view, jpeg1->fpa); // JPEG readout
     102        ro1->data_exists = ro1->parent->data_exists = ro1->parent->parent->data_exists = false;
     103        pmReadout *ro2 = pmFPAviewThisReadout(view, jpeg2->fpa); // JPEG readout
     104        ro2->data_exists = ro2->parent->data_exists = ro2->parent->parent->data_exists = false;
     105        if (options->photometry) {
     106            pmReadout *ro = pmFPAviewThisReadout(view, phot->fpa); // Photometry readout
     107            ro->data_exists = ro->parent->data_exists = ro->parent->parent->data_exists = false;
     108        }
     109        psFree(view);
     110    }
     111
    73112    return true;
    74113}
  • trunk/ppStack/src/ppStackLoop.c

    r27319 r27343  
    128128    psLogMsg("ppStack", PS_LOG_INFO, "Stage 3: Make Initial Stack: %f sec", psTimerClear("PPSTACK_STEPS"));
    129129
     130    // Done with stack inputs for now
     131    for (int i = 0; i < options->num; i++) {
     132        pmCellFreeData(options->cells->data[i]);
     133    }
     134    psFree(stack);
    130135
    131136    // Pixel rejection
     
    147152    }
    148153
     154    stack = ppStackThreadDataSetup(options, config, true);
     155    if (!stack) {
     156        psError(psErrorCodeLast(), false, "Unable to initialise stack threads.");
     157        return false;
     158    }
     159
    149160    // Final combination
    150161    psTrace("ppStack", 2, "Final stack of convolved images....\n");
     
    158169    ppStackMemDump("final");
    159170
     171    // Photometry
     172    psTrace("ppStack", 1, "Photometering stacked image....\n");
     173    if (!ppStackPhotometry(options, config)) {
     174        psError(psErrorCodeLast(), false, "Unable to perform photometry.");
     175        return false;
     176    }
     177    psLogMsg("ppStack", PS_LOG_INFO, "Stage 6: Photometry Analysis: %f sec", psTimerClear("PPSTACK_STEPS"));
     178    ppStackMemDump("photometry");
     179
    160180    // Clean up
    161181    psTrace("ppStack", 2, "Cleaning up after combination....\n");
     
    165185        return false;
    166186    }
    167 
    168     // Photometry
    169     psTrace("ppStack", 1, "Photometering stacked image....\n");
    170     if (!ppStackPhotometry(options, config)) {
    171         psError(psErrorCodeLast(), false, "Unable to perform photometry.");
    172         return false;
    173     }
    174     psLogMsg("ppStack", PS_LOG_INFO, "Stage 6: Photometry Analysis: %f sec", psTimerClear("PPSTACK_STEPS"));
    175     ppStackMemDump("photometry");
    176 
    177     if (!ppStackFilesIterateUp(config)) {
    178         psError(psErrorCodeLast(), false, "Unable to close files.");
    179         return false;
    180     }
    181     ppStackFileActivation(config, PPSTACK_FILES_STACK, false);
    182     ppStackFileActivation(config, PPSTACK_FILES_PHOT, false);
    183     options->outRO->data_exists = false;
    184     options->outRO->parent->data_exists = false;
    185     options->outRO->parent->parent->data_exists = false;
    186     psFree(options->outRO);
    187     options->outRO = NULL;
    188 
     187    for (int i = 0; i < options->num; i++) {
     188        pmCellFreeData(options->cells->data[i]);
     189    }
     190    psFree(stack);
    189191    psLogMsg("ppStack", PS_LOG_INFO, "Stage 7: Cleanup, WCS & JPEGS: %f sec", psTimerClear("PPSTACK_STEPS"));
    190192    ppStackMemDump("cleanup");
    191 
    192     psFree(stack);
    193193
    194194#if 1
     
    232232        options->unconvRO = NULL;
    233233
     234        for (int i = 0; i < options->num; i++) {
     235            pmCellFreeData(options->cells->data[i]);
     236        }
    234237        psFree(stack);
    235238    }
  • trunk/ppStack/src/ppStackPhotometry.c

    r27319 r27343  
    9898        psMetadataAddF32(options->stats, PS_LIST_TAIL, "TIME_PHOT", 0, "Time to do photometry", psTimerMark("PPSTACK_PHOT"));
    9999    }
     100
    100101    psFree(photView);
    101102
Note: See TracChangeset for help on using the changeset viewer.