int main() { T2 *ag; T1 *aux; FILE*f; char id[61],ocupatie[50],annastere[3]; int na; printf("Nume fisier: ", id); fflush(stdin); gets(id); f = fopen(id, "rt"); if (!f) { printf("Eroare deschidere fisier %s\n", id); getch(); return -1; } fscanf(f, "%i", &na); /* citeste numar analize */ ag = Aloc(20, na); if(!ag){ printf("Eroare alocare"); getch(); return -2; } ag->nc = Cit(f, ag); fclose(f); if (ag->nc == 0){ printf("Fisier vid!!!\n"); getch(); return -3;} printf("%i persoane\n", ag->nc); Afi(ag); qsort(ag->a1, ag->nc, sizeof(T1), Ord); annastere[2]='\0'; printf("\nIntroduceti anul nasterii:"); scanf("%s",annastere); printf("Introduceti ocupatia:"); scanf("%s",ocupatie); int nr; nr = Functie1(ag,annastere,ocupatie); if (nr<0) printf("Eroare"); else printf("s-au scris %i linii",nr); /* printf("\n Dupa sortare \n\n"); for(aux = ag->a1; aux < ag->a1 + ag->nc; aux++){ printf("%c%c: %s %c%c,%i \n",aux->cj[13],aux->cj[14], aux->id ,aux->cj[2],aux->cj[3], aux->gs); } printez dupa sortare cu functia afi */ // Elib(&ag); printf("\nSfarsit program\n"); getch(); }
void WFMCSingleOMP::resetRun() { ///Set up a PropertyHistory for the energy to be recorded Eindex=0; MCWalkerConfiguration::iterator Cit(W.begin()), Cit_end(W.end()); Eindex = (*Cit)->addPropertyHistory(nSteps); Cit++; while (Cit!=Cit_end) { (*Cit)->addPropertyHistory(nSteps); Cit++; } makeClones(W,Psi,H); //determine dump period for walkers int samples_tot=W.getActiveWalkers()*nBlocks*nSteps*myComm->size(); myPeriod4WalkerDump=(nTargetSamples>0)?samples_tot/nTargetSamples:Period4WalkerDump; //fall back to the default if (myPeriod4WalkerDump==0) myPeriod4WalkerDump=Period4WalkerDump; if (QMCDriverMode[QMC_WARMUP]) myPeriod4WalkerDump=nBlocks*nSteps; int samples_th=nTargetSamples/myComm->size()/NumThreads; for (int ip=0; ip<NumThreads; ++ip) { wClones[ip]->clearEnsemble(); wClones[ip]->setNumSamples(samples_th); } app_log() << " Samples are dumped at every " << myPeriod4WalkerDump << " step " << endl; app_log() << " Total Sample Size =" << nTargetSamples << "\n Sample size per node per thread = " << samples_th << endl; app_log() << " Warmup Steps " << myWarmupSteps << endl; if (Movers.empty()) { Movers.resize(NumThreads,0); branchClones.resize(NumThreads,0); estimatorClones.resize(NumThreads,0); Rng.resize(NumThreads,0); int nwtot=(W.getActiveWalkers()/NumThreads)*NumThreads; FairDivideLow(nwtot,NumThreads,wPerNode); app_log() << " Initial partition of walkers "; std::copy(wPerNode.begin(),wPerNode.end(),ostream_iterator<int>(app_log()," ")); app_log() << endl; #pragma omp parallel for for (int ip=0; ip<NumThreads; ++ip) { estimatorClones[ip]= new EstimatorManager(*Estimators);//,*hClones[ip]); estimatorClones[ip]->resetTargetParticleSet(*wClones[ip]); estimatorClones[ip]->setCollectionMode(false); Rng[ip]=new RandomGenerator_t(*(RandomNumberControl::Children[ip])); hClones[ip]->setRandomGenerator(Rng[ip]); branchClones[ip] = new BranchEngineType(*branchEngine); if (reweight=="yes") Movers[ip]=new WFMCUpdateAllWithReweight(*wClones[ip],*psiClones[ip],*hClones[ip],*Rng[ip],nSteps,Eindex); else if (UseDrift == "yes") Movers[ip]=new VMCUpdateAllWithDrift(*wClones[ip],*psiClones[ip],*hClones[ip],*Rng[ip]); else Movers[ip]=new VMCUpdateAll(*wClones[ip],*psiClones[ip],*hClones[ip],*Rng[ip]); } } #pragma omp parallel for for (int ip=0; ip<NumThreads; ++ip) { Movers[ip]->put(qmcNode); Movers[ip]->resetRun(branchClones[ip],estimatorClones[ip]); Movers[ip]->initWalkers(W.begin()+wPerNode[ip],W.begin()+wPerNode[ip+1]); for (int prestep=0; prestep<myWarmupSteps; ++prestep) Movers[ip]->advanceWalkers(W.begin()+wPerNode[ip],W.begin()+wPerNode[ip+1],true); } myWarmupSteps=0; //Used to debug and benchmark opnemp //#pragma omp parallel for // for(int ip=0; ip<NumThreads; ip++) // { // Movers[ip]->benchMark(W.begin()+wPerNode[ip],W.begin()+wPerNode[ip+1],ip); // } }