Changeset 3912 in Sophya for trunk/AddOn


Ignore:
Timestamp:
Nov 22, 2010, 10:01:12 AM (15 years ago)
Author:
ansari
Message:

correction programme de test FFT multi-thread, Reza 22/11/2010

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/AddOn/TAcq/tmtfft.cc

    r3623 r3912  
    44//   R. Ansari - C. Magneville  ,   Decembre 2007
    55// Exemples de commandes pour test (dans l'ordre ci-dessous :
    6 // csh> tmtfft OCG 1000000 XXX
    7 // csh> tmtfft STG 1000000 1024
    8 // csh> tmtfft RDG 1000000 rg1.ppf
    9 // csh> tmtfft MTG 3000000 4
     6// csh> tmtfft VSZ NTH NbFFT [PaqSz=4096]
     7// csh> tmtfft 1310720 1 10000 16384
     8// csh> tmtfft 1310720 1 10000 8192
     9// csh> tmtfft 1310720 2 10000 8192
    1010//--------------------------------------------------------------------------------
    1111
     
    3737// Definition d'une classe heritant de ZThread, pour remplir un vecteur avec
    3838// des aleatoires
     39
    3940class MTDoFFT : public ZThread {
    4041public:
     
    5354
    5455static int mtrandId = 0;  // Pour donner un identificateur a chaque thread
     56ZMutex* pmtx_=NULL;  // pour synchroniser creation de plan_fftw;
    5557
    5658MTDoFFT::MTDoFFT(TVector<r_4>& v, sa_size_t nfft, sa_size_t paqsz)
     
    5860    nbfft_(nfft), paqsz_(paqsz), ffts_(true) // preserve input=true
    5961{
     62  if (pmtx_==NULL)  pmtx_ = new ZMutex;
    6063  char buff[32];
    6164  sprintf(buff, "MTDoFFT-Id=%d", mtrandId);
     
    6366  nom_ = buff;
    6467  // Initialisation taille vecteurs
    65   TVector<r_4> vx(paqsz);
     68  TVector<r_4> vx(paqsz_);
    6669  vx = RegularSequence();
    6770  ffts_.FFTForward(vx, cfour_);
    6871  spectre_.ReSize(cfour_.Size());
    69   cout << " Thread MTDoFFT(" << nom_ << " ) Created ... " << endl;
     72  cout << " Thread MTDoFFT(" << nom_ << ", PaqSz=" << paqsz_ << " ) Created ... " << endl;
    7073}
    7174
     
    8184  FMTRandGen rgen;
    8285  TVector<r_4> vx(paqsz_);
     86 
     87  pmtx_->lock();
    8388  fftwf_plan plan = fftwf_plan_dft_r2c_1d(paqsz_, vx.Data(),
    84                                        (fftwf_complex *)cfour_.Data(), FFTW_ESTIMATE); 
     89                                          (fftwf_complex *)cfour_.Data(), FFTW_ESTIMATE); 
     90  pmtx_->unlock();
    8591
    8692  sa_size_t prm = nbfft_/10;
     
    161167  sa_size_t nfft = atoi(arg[3]);
    162168  sa_size_t paqsz = 4096;
    163   if (narg > 4) paqsz = atoi(arg[3]);
     169  if (narg > 4) paqsz = atoi(arg[4]);
    164170  try {
    165171    f3_tmtfft(VSZ, NTH, nfft, paqsz);
Note: See TracChangeset for help on using the changeset viewer.