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.