lixo1

20th March 2009, 18:15

Hi fullmetalcoder,

Thank you for your help, but unfortunately I got another time 15min. (my cpu flags has sse and sse2).

It's very strange!

Now, about multiple thread: in my case the "thread" is very simple it's a simple for() like the code bellow:

for (i=0;i<12;i++) {compt[i][0]=0;}

for (ii=0;ii<=2;ii=ii+1)

{

for (i=0;i<12;i++) {compt[i][1]=0;}

for (jj=0;jj<=2;jj=jj+1)

{

for (i=0;i<12;i++) {compt[i][2]=0;}

for (kk=0;kk<=2;kk=kk+1)

{

for (i=0;i<12;i++) {compt[i][3]=0;}

for (ll=0;ll<=2;ll=ll+1)

{

for (i=0;i<12;i++) {compt[i][4]=0;}

for (mm=0;mm<=2;mm=mm+1)

{

for (i=0;i<12;i++) {compt[i][5]=0;}

for (nn=0;nn<=2;nn=nn+1)

{

for (i=0;i<12;i++) {compt[i][6]=0;}

for (oo=0;oo<=2;oo=oo+1)

{

for (i=0;i<12;i++) {compt[i][7]=0;}

for (pp=0;pp<=2;pp=pp+1)

{

for (i=0;i<12;i++) {compt[i][8]=0;}

for (psi=0;psi<2*M_PI;psi=psi+step)

{

for (i=0;i<12;i++) {compt[i][9]=0;}

for (phi=0;phi<2*M_PI;phi=phi+step)

{

for (i=0;i<12;i++) {compt[i][10]=0;}

for (teta=0;teta<M_PI;teta=teta+step)

{ //*V 90

compt[0][10]=compt[0][10] + sin(teta)*(0.5*step*step*step*(eulerb(2,ii,teta,ph i,psi)*eulerb(0,jj,teta,phi,psi)*eulerb(0,kk,teta, phi,psi)*eulerb(0,ll,teta,phi,psi)*gamma_a[ii][jj][kk][ll]

+ eulerb(1,ii,teta,phi,psi)*eulerb(0,jj,teta,phi,psi )*eulerb(0,kk,teta,phi,psi)*eulerb(0,ll,teta,phi,p si)*gamma_a[ii][jj][kk][ll])

* (eulerb(2,mm,teta,phi,psi)*eulerb(0,nn,teta,phi,ps i)*eulerb(0,oo,teta,phi,psi)*eulerb(0,pp,teta,phi, psi)*gamma_a[mm][nn][oo][pp]

+ eulerb(1,mm,teta,phi,psi)*eulerb(0,nn,teta,phi,psi )*eulerb(0,oo,teta,phi,psi)*eulerb(0,pp,teta,phi,p si)*gamma_a[mm][nn][oo][pp]));

compt[1][10]=compt[1][10] + sin(teta)*step*step*step*(eulerb(2,ii,teta,phi,psi )*eulerb(0,jj,teta,phi,psi)*eulerb(0,kk,teta,phi,p si)*eulerb(0,ll,teta,phi,psi)*gamma_a[ii][jj][kk][ll]

+ eulerb(1,ii,teta,phi,psi)*eulerb(0,jj,teta,phi,psi )*eulerb(0,kk,teta,phi,psi)*eulerb(0,ll,teta,phi,p si)*gamma_a[ii][jj][kk][ll])

* (eulerb(2,mm,teta,phi,psi)*eulerb(0,nn,teta,phi,ps i)*eulerb(1,oo,teta,phi,psi)*eulerb(1,pp,teta,phi, psi)*gamma_a[mm][nn][oo][pp]

+ eulerb(1,mm,teta,phi,psi)*eulerb(0,nn,teta,phi,psi )*eulerb(1,oo,teta,phi,psi)*eulerb(1,pp,teta,phi,p si)*gamma_a[mm][nn][oo][pp])

+ 2 *sin(teta)*step*step*step*(eulerb(2,ii,teta,phi,ps i)*eulerb(0,jj,teta,phi,psi)*eulerb(0,kk,teta,phi, psi)*eulerb(1,ll,teta,phi,psi)*gamma_a[ii][jj][kk][ll]

+ eulerb(1,ii,teta,phi,psi)*eulerb(0,jj,teta,phi,psi )*eulerb(0,kk,teta,phi,psi)*eulerb(1,ll,teta,phi,p si)*gamma_a[ii][jj][kk][ll])

* (eulerb(2,mm,teta,phi,psi)*eulerb(0,nn,teta,phi,ps i)*eulerb(0,oo,teta,phi,psi)*eulerb(1,pp,teta,phi, psi)*gamma_a[mm][nn][oo][pp]

+ eulerb(1,mm,teta,phi,psi)*eulerb(0,nn,teta,phi,psi )*eulerb(0,oo,teta,phi,psi)*eulerb(1,pp,teta,phi,p si)*gamma_a[mm][nn][oo][pp]);

compt[2][10]=compt[2][10] + sin(teta)*0.5*step*step*step*(eulerb(2,ii,teta,phi ,psi)*eulerb(0,jj,teta,phi,psi)*eulerb(1,kk,teta,p hi,psi)*eulerb(1,ll,teta,phi,psi)*gamma_a[ii][jj][kk][ll]

+ eulerb(1,ii,teta,phi,psi)*eulerb(0,jj,teta,phi,psi )*eulerb(1,kk,teta,phi,psi)*eulerb(1,ll,teta,phi,p si)*gamma_a[ii][jj][kk][ll])

* (eulerb(2,mm,teta,phi,psi)*eulerb(0,nn,teta,phi,ps i)*eulerb(1,oo,teta,phi,psi)*eulerb(1,pp,teta,phi, psi)*gamma_a[mm][nn][oo][pp]

+ eulerb(1,mm,teta,phi,psi)*eulerb(0,nn,teta,phi,psi )*eulerb(1,oo,teta,phi,psi)*eulerb(1,pp,teta,phi,p si)*gamma_a[mm][nn][oo][pp]);

//*H 90

compt[3][10]=compt[3][10] + sin(teta)*(0.5*step*step*step*(eulerb(2,ii,teta,ph i,psi)*eulerb(2,jj,teta,phi,psi)*eulerb(0,kk,teta, phi,psi)*eulerb(0,ll,teta,phi,psi)*gamma_a[ii][jj][kk][ll]

+ eulerb(1,ii,teta,phi,psi)*eulerb(2,jj,teta,phi,psi )*eulerb(0,kk,teta,phi,psi)*eulerb(0,ll,teta,phi,p si)*gamma_a[ii][jj][kk][ll])

* (eulerb(2,mm,teta,phi,psi)*eulerb(2,nn,teta,phi,ps i)*eulerb(0,oo,teta,phi,psi)*eulerb(0,pp,teta,phi, psi)*gamma_a[mm][nn][oo][pp]

+ eulerb(1,mm,teta,phi,psi)*eulerb(2,nn,teta,phi,psi )*eulerb(0,oo,teta,phi,psi)*eulerb(0,pp,teta,phi,p si)*gamma_a[mm][nn][oo][pp]));

compt[4][10]=compt[4][10] + sin(teta)*step*step*step*(eulerb(2,ii,teta,phi,psi )*eulerb(2,jj,teta,phi,psi)*eulerb(0,kk,teta,phi,p si)*eulerb(0,ll,teta,phi,psi)*gamma_a[ii][jj][kk][ll]

+ eulerb(1,ii,teta,phi,psi)*eulerb(2,jj,teta,phi,psi )*eulerb(0,kk,teta,phi,psi)*eulerb(0,ll,teta,phi,p si)*gamma_a[ii][jj][kk][ll])

* (eulerb(2,mm,teta,phi,psi)*eulerb(2,nn,teta,phi,ps i)*eulerb(1,oo,teta,phi,psi)*eulerb(1,pp,teta,phi, psi)*gamma_a[mm][nn][oo][pp]

+ eulerb(1,mm,teta,phi,psi)*eulerb(2,nn,teta,phi,psi )*eulerb(1,oo,teta,phi,psi)*eulerb(1,pp,teta,phi,p si)*gamma_a[mm][nn][oo][pp])

+ 0.5*sin(teta)*step*step*step*(eulerb(2,ii,teta,phi ,psi)*eulerb(2,jj,teta,phi,psi)*eulerb(0,kk,teta,p hi,psi)*eulerb(1,ll,teta,phi,psi)*gamma_a[ii][jj][kk][ll]

+ eulerb(1,ii,teta,phi,psi)*eulerb(2,jj,teta,phi,psi )*eulerb(0,kk,teta,phi,psi)*eulerb(1,ll,teta,phi,p si)*gamma_a[ii][jj][kk][ll])

* (eulerb(2,mm,teta,phi,psi)*eulerb(2,nn,teta,phi,ps i)*eulerb(0,oo,teta,phi,psi)*eulerb(1,pp,teta,phi, psi)*gamma_a[mm][nn][oo][pp]

+ eulerb(1,mm,teta,phi,psi)*eulerb(2,nn,teta,phi,psi )*eulerb(0,oo,teta,phi,psi)*eulerb(1,pp,teta,phi,p si)*gamma_a[mm][nn][oo][pp]);

compt[5][10]=compt[5][10] + sin(teta)*0.5*step*step*step*(eulerb(2,ii,teta,phi ,psi)*eulerb(2,jj,teta,phi,psi)*eulerb(1,kk,teta,p hi,psi)*eulerb(1,ll,teta,phi,psi)*gamma_a[ii][jj][kk][ll]

+ eulerb(1,ii,teta,phi,psi)*eulerb(2,jj,teta,phi,psi )*eulerb(1,kk,teta,phi,psi)*eulerb(1,ll,teta,phi,p si)*gamma_a[ii][jj][kk][ll])

* (eulerb(2,mm,teta,phi,psi)*eulerb(2,nn,teta,phi,ps i)*eulerb(1,oo,teta,phi,psi)*eulerb(1,pp,teta,phi, psi)*gamma_a[mm][nn][oo][pp]

+ eulerb(1,mm,teta,phi,psi)*eulerb(2,nn,teta,phi,psi )*eulerb(1,oo,teta,phi,psi)*eulerb(1,pp,teta,phi,p si)*gamma_a[mm][nn][oo][pp]);

//Cancel process if stop requested

if(isTerminated){goto end;}

}

for (i=0;i<12;i++) {compt[i][9]=compt[i][9]+compt[i][10];}

}

for (i=0;i<12;i++) {compt[i][8]=compt[i][8]+compt[i][9];}

}

for (i=0;i<12;i++) {compt[i][7]=compt[i][7]+compt[i][8];}

}

for (i=0;i<12;i++) {compt[i][6]=compt[i][6]+compt[i][7];}

}

for (i=0;i<12;i++) {compt[i][5]=compt[i][5]+compt[i][6];}

}

for (i=0;i<12;i++) {compt[i][4]=compt[i][4]+compt[i][5];}

}

for (i=0;i<12;i++) {compt[i][3]=compt[i][3]+compt[i][4];}

}

//Increment ProgressBar + set number in %

if(DipCoefChecked){ percent++; emit progbar(percent);}

else{ percent +=2; emit progbar(percent); }

for (i=0;i<12;i++) {compt[i][2]=compt[i][2]+compt[i][3];}

}

for (i=0;i<12;i++) {compt[i][1]=compt[i][1]+compt[i][2];}

}

for (i=0;i<12;i++) {compt[i][0]=compt[i][0]+compt[i][1];}

}

Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.