コード例 #1
0
//----------------------------------------
double CBratAlgoFilterLoess2D::Run(CVectorBratAlgorithmParam& args)
{

  int32_t iRecord = m_callerProduct->GetCurrentRecordNumber();

  if (iRecord == m_callerProductRecordPrev)
  {
    // Do nothing: data have been already computed
    return m_loess;
  }

  m_varValueArray = NULL;

  setDefaultValue(m_loess);

  OpenProductFile();
  
  SetParamValues(args);

  if (GetDataWindowSize() < 1)
  {

    PrepareReturn();
    return m_loess;
  }

  if (GetDataWindowSize() == 1)
  {
    m_loess = m_varValue;
    PrepareReturn();
    return m_loess;
  }

  if ( m_varValueArray == NULL)
  {
    ComputeSingle();
  }
  else
  {
    ComputeMean();
  }


  PrepareReturn();

  return m_loess;

}
コード例 #2
0
ファイル: scheduler.cpp プロジェクト: onukore/radium
 INLINE void StopMeasure(int staticthreadnum, int& dynthreadnum)
 {
     if (!fDynAdapt) {
         return;
     }
     
     //fStop = DSP_rdtsc();
     fStop = GetMicroSeconds();
     fCounter = (fCounter + 1) % KDSPMESURE;
     if (fCounter == 0) {
         float mean = ComputeMean();
         // Recompute dynthreadnum is timing différence is sufficient...
         //printf("mean = %f fOldMean = %f\n", mean, fOldMean);
         if (fabs(mean - fOldMean) / fOldMean > MEAN_TRESHOLD) {
             if (mean > fOldMean) { // Worse...
                 if (fOldfDynamicNumThreads > dynthreadnum) {
                     fOldfDynamicNumThreads = dynthreadnum;
                     dynthreadnum += 1;
                 } else {
                     fOldfDynamicNumThreads = dynthreadnum;
                     dynthreadnum -= 1;
                 }
              } else { // Better...
                 if (fOldfDynamicNumThreads > dynthreadnum) {
                     fOldfDynamicNumThreads = dynthreadnum;
                     dynthreadnum -= 1;
                 } else {
                     fOldfDynamicNumThreads = dynthreadnum;
                     dynthreadnum += 1;
                 }
             }
             fOldMean = mean;
             dynthreadnum = Range(1, staticthreadnum, dynthreadnum);
             //printf("dynthreadnum = %d\n", dynthreadnum);
         }
     }
     // And keep computation time
     fTiming[fCounter] = fStop - fStart; 
 }