Changeset 3876 in Sophya
- Timestamp:
- Sep 9, 2010, 11:49:42 AM (15 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/acqparam_exemple.d
r3764 r3876 55 55 # @nosavesigfits 56 56 nosavesigfits 57 ###################### 58 ### Parametres pour calcul des visibilites 59 ### Le calcul des visibilites ne peut etre active qu'avec le parametre de ligne de commande de mfacq 60 # @visicalc NbPaqMean NbCalcGrp NbThrPerCalc 61 # - NbPaqMean : nb de paquets moyennes 62 # - NbCalcGrp : Nombre de calculateurs de visibilites s'executant en parallele ds le BRVisCalcGroup 63 # - NbThrPerCalc : Nombre de thread dans chaque calculateur ( laisser a 1 de preference ) 64 # Defaut : visicalc 1024 1 1 65 visicalc 5000 2 1 66 ## Binning en frequence lors du calcul (parametre en numero des frequences) 67 # @visicfreq freqmin freqmax nbinfreq 68 # Defaut: visicfreq 0 0 1 (aucun binning, toutes les frequences) 69 visicfreq 0 0 1 57 70 # Taux de perte de paquets en simulation (Sans carte PCIExpress) 58 71 # @nopcilossrate Perte (0<=Perte<1) -
trunk/AddOn/TAcq/bracqvers.h
r3757 r3876 5 5 Software version LAL - 2008-2010 6 6 */ 7 #define BAOR_ACQ_VER 7. 18 #define BAOR_ACQ_VER_STR "BaoAcq_v7r 1_Avr10 "7 #define BAOR_ACQ_VER 7.2 8 #define BAOR_ACQ_VER_STR "BaoAcq_v7r2_Sep10 " 9 9 10 10 #endif -
trunk/AddOn/TAcq/brbaseproc.cc
r3872 r3876 161 161 int BRBaseProcessor::Process() 162 162 { 163 // Cette methode est appele pour chaque "trigger', cad la serie de paquets pour toutes les fibres 163 164 // la methode par defaut ne fait rien 164 165 // if (fgokallfibers_) { faire le traitement } … … 166 167 /* Exemple de code test */ 167 168 if ( totprocnpaq_ % 1000 == 0 ) { 168 cout << " BR VisibilityCalculator::Process() " << totprocnpaq_ << " FrameCnt=" ;169 cout << " BRBaseProcessor::Process() " << totprocnpaq_ << " FrameCnt=" ; 169 170 for(size_t fib=0; fib<(size_t)memgr_.NbFibres(); fib++) 170 171 cout << curfc_[fib] << "," ; -
trunk/AddOn/TAcq/brparam.cc
r3764 r3876 139 139 skysource=""; 140 140 141 // --- variables de controle pour le monitoring 141 142 fgdoProc=false; 142 143 nmeanProc=512; 143 144 stepProc=5; 144 145 nmaxProc=0; 145 146 // --- variables de controle pour le calcul des visibilites 147 fgdoVisiC = false; 148 nmeanVisiC=1024; 149 nbcalgrpVisiC=1; 150 nthrVisiC=1; 151 freqminVisiC=freqmaxVisiC=0; 152 nbinfreqVisiC=1; 153 154 // Autres variables / variables speciales 146 155 monothr=false; 147 156 activate_pattern=false; … … 237 246 ethr_nlink=conf.IParam("ethrnlink",0,0); // Nombre de sources de paquets en reception ethernet 238 247 239 248 // Parametre de controle du monitoring 240 249 if (conf.HasKey("monitor")) { 241 250 fgdoProc=true; … … 244 253 nmaxProc=conf.IParam("monitor",2,0); 245 254 } 255 // Parametres pour le calcul des visibilites - le flag fgdoVisiC ne peut etre active 256 // qu'avec l'option de ligne de commande de mfacq 257 if (conf.HasKey("visicalc")) { 258 nmeanVisiC=conf.IParam("visicalc",0,1024); 259 nbcalgrpVisiC=conf.IParam("visicalc",1,1); 260 nthrVisiC=conf.IParam("visicalc",2,1); 261 } 262 if (conf.HasKey("visicfreq")) { 263 freqminVisiC=conf.IParam("visicfreq",0,0); 264 freqmaxVisiC=conf.IParam("visicfreq",1,0); 265 nbinfreqVisiC=conf.IParam("visicfreq",2,1); 266 } 267 246 268 nopciLossRate=conf.DParam("nopcilossrate",0,0.); 247 269 fg_hard_ctrlc=conf.HasKey("hard_ctrlc"); … … 354 376 os << " Monitoring NMeanProc=" << nmeanProc << " StepProc=" << stepProc << " NMaxProc=" << nmaxProc << endl; 355 377 else os << " No monotoring thread " << endl; 378 if (fgdoVisiC) { 379 os << " Visibility calculation, nbCalGrp=" << nbcalgrpVisiC << " NThr/VisCal=" << nthrVisiC << endl; 380 os << " ... VisiCalc FrequencyBinning FreqMin= " << freqminVisiC << " FreqMax= " << freqmaxVisiC 381 << " NBinFreq= " << nbinfreqVisiC<< endl; 382 } 356 383 os << " fg_hard_ctrlc=" << ((fg_hard_ctrlc)?"true":"false"); 357 384 os << " Save to fits " << ((savesigfits)?"true":"false") << endl; -
trunk/AddOn/TAcq/brparam.h
r3775 r3876 175 175 uint_4 nmaxProc; // Nombre de blocs traites par le thread de traitement/monitoring (0-> MaxNbBlocs()) 176 176 177 // Variables pour le calcul de visibilites 178 bool fgdoVisiC; // true -> calcul des visibilites 179 uint_4 nmeanVisiC; // nombre de paquets moyennes pour les calculs de visibilites 180 uint_4 nbcalgrpVisiC; // Nb d'objets/threads dans BRVisCalcGroup 181 uint_4 nthrVisiC; // Nb de threads pour l'execution parallele ds BRVisibilityCalculator 182 uint_4 freqminVisiC, freqmaxVisiC, nbinfreqVisiC; // si zone de frequence/rebinning pour visibilites 183 184 177 185 // Pour des tests de performances ou sans carte ADC (pattern) 178 186 bool monothr ; // pour les test mono thread -
trunk/AddOn/TAcq/brviscalc.cc
r3872 r3876 68 68 BRVisibilityCalculator::~BRVisibilityCalculator() 69 69 { 70 if (totnbpaq_<1) return; 70 71 cout << " BRVisibilityCalculator - Visibility Datatable : " << endl; 71 72 cout << visdt_; 73 72 74 string filename; 73 75 filename = outpath_+"visdt.ppf"; … … 82 84 POutPersist poc(outpath_+"chanum.ppf"); 83 85 poc << chanum_; 84 86 85 87 if (fgcktt_) { 86 88 cout << " BRVisibilityCalculator - Check TimeTag done: TotNPaqProc= " << totnbpaq_ << endl; … … 137 139 if ((jf1_<1)||(jf1_>=vismtx_.NCols())) jf1_=1; 138 140 if ((jf2_<1)||(jf2_>=vismtx_.NCols())||(jf2_<jf1_)) jf2_=vismtx_.NCols()-1; 139 if (nbfreq<1) nbfreq= 1;141 if (nbfreq<1) nbfreq=(jf2_-jf1_); 140 142 djf_=(jf2_-jf1_)/nbfreq; 141 if (djf_<1) djf_= 0;143 if (djf_<1) djf_=1; 142 144 cout << " BRVisibilityCalculator::SelectFreqBinning/Info JF1=" << jf1_ 143 145 << " JF2=" << jf2_ << " DJF=" << djf_ << endl; -
trunk/AddOn/TAcq/brviscalc.h
r3872 r3876 43 43 uint_4 SelectPairs(uint_4 pair1=0, uint_4 nbpairs=99999999); 44 44 // pour definir le binning en frequence pour la VisibDataTable 45 int SelectFreqBinning(uint_4 freq1=0, uint_4 freq2=0, uint_4 nbfreq=1); 45 // par defaut, toutes les frequences avec un pas de 1 46 int SelectFreqBinning(uint_4 freq1=0, uint_4 freq2=0, uint_4 nbfreq=0); 46 47 47 48 // Pour activer la verification des timetag -
trunk/AddOn/TAcq/mfacq.cc
r3767 r3876 52 52 } 53 53 54 const char* desact[ 3] = {"PCIE_To_Ethernet", "Ethernet_To_Disk","PCIE_DMA_To_Disk"};54 const char* desact[4] = {"PCIE_To_Ethernet", "Ethernet_To_Disk", "Ethernet_To_Visibilities","PCIE_DMA_To_Disk"}; 55 55 string action=arg[1]; 56 56 int act = 0; 57 if ((action != "-pci2eth")&&(action != "-pci2disk")&&(action != "-eth2disk") ) {57 if ((action != "-pci2eth")&&(action != "-pci2disk")&&(action != "-eth2disk")&&(action != "-eth2visib")) { 58 58 cout << " mfacq/Error , Bad action argument : " << action << endl; 59 59 return 2; 60 60 } 61 61 if (action == "-pci2eth") act=0; 62 else if (action == "-eth2disk") act=1; 63 else if (action == "-pci2disk") act=2; 62 else if (action == "-eth2disk") act=1; 63 else if (action == "-eth2visib") act=2; 64 else if (action == "-pci2disk") act=3; 64 65 65 66 string pardcfile=arg[2]; … … 84 85 if (act > 0) 85 86 if (acpar.CreateOutputDirectories()!=0) return 9; 87 acpar.GetParams().fgdoVisiC=false; 88 if (act == 2) acpar.GetParams().fgdoVisiC=true; 89 86 90 acpar.Print(cout); 87 91 struct sigaction siact; … … 94 98 rc = PCIEToEthernetTransfer(); 95 99 break; 96 case 1: 97 rc = EthernetToMemoryAcq( );100 case 1: // ethernet --> disk 101 rc = EthernetToMemoryAcq(false); 98 102 break; 99 case 2: 103 case 2: // ethernet --> visibility calculation 104 rc = EthernetToMemoryAcq(true); 105 break; 106 case 3: 100 107 rc = MultiFibreAcq(); 101 108 break; … … 134 141 cout << " Usage: mfacq Action DataCardFile [BaseDirectory / TargetMachines]" << endl; 135 142 if (fgshort) return; 136 cout << " o Action = -pci2disk , -pci2eth , -eth2disk \n "143 cout << " o Action = -pci2disk , -pci2eth , -eth2disk , -eth2visib \n " 137 144 << " DataCardFile : File name for parameters list (DataCards) : \n" 138 145 << " fibres outpathname skysource paqsize dmasizekb nbfiles \n" … … 262 269 << acpar.nZones << " NbPaquet/Zone=" << acpar.nPaqZone 263 270 << " MmgrPaqSize=" << acpar.MMgrPaquetSize() << endl; 264 265 271 #ifndef NOPCIECARD 266 272 for (int i=0 ;i <acpar.NFibers() ;i++) { … … 319 325 } 320 326 327 328 /* Fonction-Utilitaire : Voir en fin de fichier */ 329 MemZaction ConvertMemZ_Status2Action( MemZStatus st ); 330 321 331 /* --Nouvelle-Fonction-- */ 322 int EthernetToMemoryAcq( )332 int EthernetToMemoryAcq(bool fgviscal) 323 333 { 324 334 Timer tm("mfacq/EthernetToMemoryAcq"); … … 327 337 BRAcqConfig bpar; 328 338 BRParList& acpar=bpar.GetParams(); 329 339 340 if (fgviscal) cout << "mfacq[0]/EthernetToMemoryAcq() : On the fly Visibility Calculation " << endl; 341 else cout << "mfacq[0]/EthernetToMemoryAcq() : data dumped to disk " << endl; 330 342 cout << " mfacq[1]/Info: Creating RAcqMemZoneMgr for" << acpar.NbEthLinks() << " Eth-links , nZones=" 331 343 << acpar.nZones << " NbPaquet/Zone=" << acpar.nPaqZone … … 333 345 RAcqMemZoneMgr mmgr(acpar.nZones, acpar.NbEthLinks(), acpar.nPaqZone, acpar.MMgrPaquetSize()); 334 346 pMmgr=&mmgr; 335 if (acpar.fgdoProc && (acpar.stepProc>0)) { 347 348 349 string strfmask; 350 uint_4 fmask=0; 351 MemZStatus mskmon=MemZS_Proc; 352 if (fgviscal) { // gestion de finalized_mask lors du calcul de visibilites 353 if (acpar.nbcalgrpVisiC<1) acpar.nbcalgrpVisiC=1; 354 if (acpar.nbcalgrpVisiC>4) acpar.nbcalgrpVisiC=4; 355 cout << " mfacq[1.b]/Info: NbCalGrpVisiC = " << acpar.nbcalgrpVisiC << " (1<=NbCalGrpVisiC<=4)" << endl; 356 fmask=(uint_4)MemZS_ProcA; strfmask="MemZS_ProcA"; mskmon=MemZS_ProcB; 357 if (acpar.nbcalgrpVisiC>1) 358 { fmask |= (uint_4)MemZS_ProcB; strfmask+=" | MemZS_ProcB"; mskmon=MemZS_ProcC; } 359 if (acpar.nbcalgrpVisiC>2) 360 { fmask |= (uint_4)MemZS_ProcC; strfmask+=" | MemZS_ProcC"; mskmon=MemZS_ProcD; } 361 if (acpar.nbcalgrpVisiC>3) 362 { fmask |= (uint_4)MemZS_ProcD; strfmask+=" | MemZS_ProcD"; mskmon=MemZS_ProcE; } 363 } 364 else { 365 fmask=(uint_4)MemZS_Saved; strfmask="MemZS_Saved"; mskmon=MemZS_Proc; 366 } 367 if (acpar.fgdoProc) 368 { fmask |= (uint_4)mskmon; strfmask+=" | MemZS_Proc[Monotoring]"; } 336 369 // Dans ce cas, toutes les zones doivent passer ds le thread de monitoring 337 370 // pour etre au moins marque comme traite - seul 1/acpar.stepProc sont effectivement traite 338 mmgr.SetFinalizedMask(((uint_4)MemZS_Saved) | ((uint_4)MemZS_Proc)); 339 cout << " mfacq[1.b]/Info: Mmgr.SetFinalizedMask( MemZS_Saved | MemZS_Proc )" << endl; 340 } 341 342 343 cout <<"mfacq[2] Creating MultiDataSaver and MonitorProc thread objects ... " << endl; 371 372 mmgr.SetFinalizedMask(fmask); 373 cout << " mfacq[1.b]/Info: Mmgr.SetFinalizedMask( " << strfmask << " )" << endl; 374 375 if (fgviscal) 376 cout <<"mfacq[2] Creating BRVisCalcGroup, NbVisibCalculator=" << acpar.nbcalgrpVisiC 377 << " and MonitorProc " << endl; 378 else 379 cout <<"mfacq[2] Creating MultiDataSaver and MonitorProc thread objects ... " << endl; 344 380 MultiDataSaver DsThr(mmgr); // Utilise les parametres globaux BRAcqConfig 345 381 string ppath=bpar.OutputDirectory(); 346 382 MonitorProc PrThr(mmgr); 383 PrThr.SetMemZAction( ConvertMemZ_Status2Action( mskmon ) ); 384 BRVisCalcGroup VCGThr(acpar.nbcalgrpVisiC, mmgr, bpar.OutputDirectory(), acpar.nmeanVisiC, acpar.nthrVisiC); 385 VCGThr.SelectFreqBinning(acpar.freqminVisiC, acpar.freqmaxVisiC, acpar.nbinfreqVisiC); 386 387 347 388 cout << "mfacq[3] Creating EthernetReader thread object " << endl; 348 389 EthernetReader ethrdr(mmgr, bpar.GetParams(), bpar.GetParams().tcpportid, false); … … 350 391 // usleep(200); attente au cas ou ... 351 392 pEthRdr=ðrdr; 352 tm.Split("Threads created"); 353 if (acpar.fgdoProc>0) 354 cout << "mfacq[4] - starting three threads: EthernetReader, MultiDataSaver, MonitorProc ... " << endl; 355 else 356 cout << "mfacq[4] - starting two threads: EthernetReader, MultiDataSaver ... " << endl; 357 393 tm.Split("Threads created"); 394 cout << "mfacq[4] - starting EthernetReader thread object ..." << endl; 358 395 ethrdr.start(); 359 DsThr.start(); 360 if (acpar.fgdoProc>0) { // On ne demarre que si au moins NMaxProc>0 396 if (fgviscal) { 397 cout << "mfacq[4.b] - starting Visibility calculator threads " << endl; 398 VCGThr.start(); 399 } 400 else { 401 cout << "mfacq[4.b] - starting MultiDataSaver " << endl; 402 DsThr.start(); 403 } 404 if (acpar.fgdoProc) { // demarrage (optionnel) du thread de monitoring 405 cout << " mfacq[4.c] - starting MonitorProc thread object " << endl; 361 406 PrThr.start(); 362 407 } … … 367 412 cout << "mfacq[5] - Waiting for threads to finish ... " << endl; 368 413 ethrdr.join(); 369 DsThr.join(); 414 if (fgviscal) VCGThr.join(); 415 else DsThr.join(); 370 416 mmgr.Stop(); 371 417 if (acpar.fgdoProc) { // On n'attend la fin que si le thread a ete demarre (NMaxProc>0) … … 381 427 382 428 } 429 430 431 /* --Nouvelle-Fonction-Utilitaire */ 432 MemZaction ConvertMemZ_Status2Action( MemZStatus st ) 433 { 434 MemZaction ra=MemZA_None; 435 switch (st) { 436 case MemZS_Filled: 437 ra=MemZA_Fill; 438 break; 439 case MemZS_Saved: 440 ra=MemZA_Save; 441 break; 442 case MemZS_Proc: 443 ra=MemZA_Proc; 444 break; 445 case MemZS_ProcA: 446 ra=MemZA_ProcA; 447 break; 448 case MemZS_ProcB: 449 ra=MemZA_ProcB; 450 break; 451 case MemZS_ProcC: 452 ra=MemZA_ProcC; 453 break; 454 case MemZS_ProcD: 455 ra=MemZA_ProcD; 456 break; 457 case MemZS_ProcE: 458 ra=MemZA_ProcE; 459 break; 460 case MemZS_ProcF: 461 ra=MemZA_ProcF; 462 break; 463 default: 464 ra=MemZA_None; 465 break; 466 } 467 return ra; 468 } -
trunk/AddOn/TAcq/mfacq.h
r3757 r3876 23 23 #include "brpaqu.h" 24 24 25 #include "brviscalc.h" // calcul de visibilites 26 25 27 #include "resusage.h" 26 28 #include "ctimer.h" … … 42 44 43 45 int PCIEToEthernetTransfer(); 44 int EthernetToMemoryAcq( );46 int EthernetToMemoryAcq(bool fgviscal=false); 45 47 int MultiFibreAcq(); 46 48 -
trunk/AddOn/TAcq/racquproc.cc
r3729 r3876 58 58 curfc_.SetSize(memgr.NbFibres(), memgr.NbPaquets()); 59 59 cpaqok_.SetSize(memgr.NbFibres(), memgr.NbPaquets()); 60 SetMemZAction(); 60 61 } 61 62 … … 64 65 { 65 66 // cout << " **** DBG ***** MonitorProc::~MonitorProc() " << endl; 67 } 68 69 /* --Methode-- */ 70 MemZStatus MonitorProc::SetMemZAction(MemZaction mmact) 71 { 72 mmact_=mmact; 73 mmsta_=MemZS_Proc; 74 switch (mmact) { 75 case MemZA_ProcA: 76 mmsta_=MemZS_ProcA; 77 break; 78 case MemZA_ProcB: 79 mmsta_=MemZS_ProcB; 80 break; 81 case MemZA_ProcC: 82 mmsta_=MemZS_ProcC; 83 break; 84 case MemZA_ProcD: 85 mmsta_=MemZS_ProcD; 86 break; 87 case MemZA_ProcE: 88 mmsta_=MemZS_ProcE; 89 break; 90 case MemZA_ProcF: 91 mmsta_=MemZS_ProcF; 92 break; 93 default: 94 mmact_=MemZA_Proc; 95 mmsta_=MemZS_Proc; 96 break; 97 } 98 return mmsta_; 66 99 } 67 100 … … 166 199 if (memgr.GetRunState() == MemZR_Stopped) break; 167 200 168 int mid = memgr.FindMemZoneId( MemZA_Proc);201 int mid = memgr.FindMemZoneId(mmact_); // MemZA_Proc 169 202 Byte* buffg = memgr.GetMemZone(mid); 170 203 if (buffg == NULL) { … … 173 206 } 174 207 if ((step_>1)&&(kmz%step_ != 0)) { 175 memgr.FreeMemZone(mid, MemZS_Proc);208 memgr.FreeMemZone(mid, mmsta_); // MemZS_Proc); 176 209 continue; 177 210 } … … 237 270 } // FIN de la boucle sur les paquets 238 271 } // Boucle sur les fibres 239 memgr.FreeMemZone(mid, MemZS_Proc);272 memgr.FreeMemZone(mid, mmsta_); // MemZS_Proc); 240 273 CheckFrameCounters(); 241 274 -
trunk/AddOn/TAcq/racquproc.h
r3775 r3876 39 39 MonitorProc(RAcqMemZoneMgr& mem); 40 40 virtual ~MonitorProc(); 41 MemZStatus SetMemZAction(MemZaction mmact=MemZA_Proc); 41 42 virtual void run(); 42 43 void Stop(); … … 48 49 49 50 RAcqMemZoneMgr& memgr; 51 MemZaction mmact_; // Definition de l'action sur les paquets (defaut=MemZA_Proc) 52 MemZStatus mmsta_; // Statut associe a mmact_ (defaut=MemZS_Proc) 50 53 BRParList par_; 51 54 bool stop_;
Note:
See TracChangeset
for help on using the changeset viewer.