IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 18880


Ignore:
Timestamp:
Aug 4, 2008, 7:45:02 AM (18 years ago)
Author:
eugene
Message:

threaded bias application

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20080804/psModules/src/detrend/pmBias.c

    r18879 r18880  
    1818#include "pmBias.h"
    1919
    20 typedef struct {
    21   pmReadout *in;
    22   pmReadout *sub;
    23   float scan;
    24   int xOffset, yOffset;
    25   int rowStart, rowStop;
    26 } pmBiasSubtractScanArgs;
    27 
    28 void pmBiasSubtractScanArgsFree (pmBiasSubtractScanArgs *args) {
    29   return;
    30 }
    31 
    32 pmBiasSubtractScanArgs *pmBiasSubtractScanArgsAlloc () {
    33 
    34 }
     20// XXX create scalar macro lookups: PS_SCALAR_VALUE(DATA,TYPE)
     21
     22# define PS_SCALAR_VALUE(DATA,TYPE) ((psScalar *)(DATA)->data.##TYPE)
    3523
    3624pmBiasSubtractScan_Threaded (psThreadJob *job) {
    37 
    38       args->in = in;
    39       args->sub = sub;
    40       args->scan = scan;
    41       args->xOffset = xOffset;
    42       args->yOffset = yOffset;
    43       args->rowStart = rowStart;
    44       args->rowStop = rowStop;
    45       bool status = pmBiasSubtractScan (args->in, args->sub, args->scan, args->xOffset, args->yOffset, args->rowStart, args->rowStop);
    46       return status;
     25    pmReadout *in = job->args->data[0];
     26    pmReadout *sub = job->args->data[1];
     27    float scan   = PS_SCALAR_VALUE(job->args->data[2],F32);
     28    int xOffset  = PS_SCALAR_VALUE(job->args->data[3],S32);
     29    int yOffset  = PS_SCALAR_VALUE(job->args->data[4],S32);
     30    int rowStart = PS_SCALAR_VALUE(job->args->data[5],S32);
     31    int rowStop  = PS_SCALAR_VALUE(job->args->data[6],S32);
     32    bool status = pmBiasSubtractScan (in, sub, scan, xOffset, yOffset, rowStart, rowStop);
     33    return status;
    4734}
    4835
     
    149136      int rowStop = PS_MIN (rowStart + scanRows, inImage->numRows);
    150137
    151       // allocate a job
     138      // allocate a job, construct the arguments for this job
    152139      psThreadJob *job = psThreadJobAlloc ("PSMODULES_DETREND_BIAS");
    153 
    154       pmBiasSubtractScanArgs *args = pmBiasSubtractScanArgsAlloc ();
    155       args->in = in;
    156       args->sub = sub;
    157       args->scan = scan;
    158       args->xOffset = xOffset;
    159       args->yOffset = yOffset;
    160       args->rowStart = rowStart;
    161       args->rowStop = rowStop;
    162 
    163       // construct the arguments for this job
    164       psArrayAdd (job->args, 1, args);
    165       psFree (args);
     140      psArrayAdd (job->args, 1, in);
     141      psArrayAdd (job->args, 1, sub);
     142      psArrayAdd (job->args, 1, psScalarAlloc(scan, PS_TYPE_F32));
     143      psArrayAdd (job->args, 1, psScalarAlloc(xOffset, PS_TYPE_S32));
     144      psArrayAdd (job->args, 1, psScalarAlloc(yOffset, PS_TYPE_S32));
     145      psArrayAdd (job->args, 1, psScalarAlloc(rowStart, PS_TYPE_S32));
     146      psArrayAdd (job->args, 1, psScalarAlloc(rowStop, PS_TYPE_S32));
    166147
    167148      // ppImageDetrendReadout(config, options, view)
     
    169150        return false;
    170151      }
    171 
    172       pmBiasSubtractScan (in, sub, scan, xOffset, yOffset, rowStart, rowStop);
     152      // pmBiasSubtractScan (in, sub, scan, xOffset, yOffset, rowStart, rowStop);
     153    }
     154
     155    // wait here for the threaded jobs to finish
     156    if (!psThreadPoolWait ()) {
     157        psError(PS_ERR_UNKNOWN, false, "Unable to interpolate image.");
     158        return false;
     159    }
     160    fprintf (stderr, "success for threaded jobs\n");
     161
     162    // each job records its own goodPixel values; sum them here
     163    // we have only supplied one type of job, so we can assume the types here
     164    psThreadJob *job = NULL;
     165    while ((job = psThreadJobGetDone()) != NULL) {
     166        pswarpTransformTileArgs *args = job->args->data[0];
     167        goodPixels += args->goodPixels;
     168        psFree (job);
    173169    }
    174170
Note: See TracChangeset for help on using the changeset viewer.