Changeset 3264 in Sophya for trunk/SophyaProg


Ignore:
Timestamp:
Jun 11, 2007, 9:47:11 PM (18 years ago)
Author:
ansari
Message:

amelioration / optimisation des operations arrdl/arrmf dans zthr.cc , Reza 11/06/2007

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaProg/Tests/zthr.cc

    r3263 r3264  
    102102  ztarg * za = (ztarg *)arg;
    103103  sa_size_t vsz = za->M*za->M;
    104 
    105   cout << ">>>> arrdl-funzt(ThId=" << za->thid << " VecSz=M*M " << vsz 
    106        << " V2=DLO4(V1) , NOp ~= 10*vsz=" << 10*vsz << endl;
     104  sa_size_t EXS = 10;
     105
     106  cout << ">>>> arrdl-funzt(ThId=" << za->thid << " DataBlock_Sz=M*M " << vsz 
     107       << " V2=DLO4(V1) , NOp ~= 10*10*vsz=" << 10*EXS*vsz << endl;
    107108 
    108109  TVector<r_8> v1(vsz), v2(vsz);
    109   v1 = RegularSequence(1.,0.001);
     110  TVector<r_8> coeff(EXS);
     111  coeff = RandomSequence();
     112  //  v1 = RegularSequence(1.,0.001);  --- ATTENTION , couteux en temps
     113  //  NDataBlock<r_8> v1(vsz, false), v2(vsz, false);
     114  for(sa_size_t i=0; i<vsz; i++)   v1(i) = i*0.001;
    110115  char buff[128];
    111116  sprintf(buff, "arrdl-funzt(ThId=%d) EndOfInit", za->thid);
    112117  PrtTim(buff);
    113   for(sa_size_t i=0; i<vsz; i++) {
    114     double x = v1(i);
    115     v2(i) = x*(1+x*(x/2.+x*(x/6.+x*x/24.)));
     118
     119  double c2 = 0.5;
     120  double c3 = 1./6.;
     121  double c4 = 1./24;
     122  for(sa_size_t k=0; k<EXS; k++) {
     123    for(sa_size_t i=0; i<vsz; i++) {
     124      register double x = v1(i)*coeff(k);
     125      v2(i) = x*(1+x*(x*c2+x*(x*c3+x*x*c4)));
     126    }
    116127  }
    117128  sprintf(buff, "arrdl-funzt(ThId=%d) EndOfOper", za->thid);
     
    126137
    127138  cout << ">>>> arrmf-funzt(ThId=" << za->thid << " VecSz=M*M " << vsz 
    128        << " V2=Sin(V1) , NOp ~= 10*vsz=" << 10*vsz << endl;
     139       << " V2=Sin(V1) , NOp ~= 50*vsz=" << 50*vsz << endl;
    129140 
    130141  TVector<r_8> v1(vsz), v2(vsz);
    131   v1 = RegularSequence(1.,0.001);
    132   char buff[128];
    133   sprintf(buff, "arrmf-funzt(ThId=%d) EndOfInit", za->thid);
    134   PrtTim(buff);
     142  //--  v1 = RegularSequence(1.,0.001);  COUTEUX en TCPU
     143  for(sa_size_t i=0; i<vsz; i++)  v1(i) = i*0.001;
     144  char buff[128];
     145  sprintf(buff, "arrmf-funzt(ThId=%d) EndOfInit", za->thid);
     146  PrtTim(buff);
     147
    135148  v2 = Sin(v1);
    136 
     149  v2 += Cos(v1);
    137150  sprintf(buff, "arrmf-funzt(ThId=%d) EndOfOper", za->thid);
    138151  PrtTim(buff);
Note: See TracChangeset for help on using the changeset viewer.