include 'cparam.inc' include 'stagger.ifc' real f(mx,my,mz), fpx(mx,my,mz), fpy(mx,my,mz), fpz(mx,my,mz) common /cblock/lblock common /cscr/f,fp,fpx,fpy,fpz,fx(mx),fy(my),fz(mz) !$distribute f(*,*,block),fpx(*,*,block),fpy(*,*,block),fpz(*,*,block) !hpf$ align with TheCube:: f, fpx, fpy, fpz real cpu(2) ! read *,lblock lblock=0 dx=1. dy=1. dz=1. call init_stagger() call init_derivs() ! x-test c$doacross local(i,j,k,ff), shared(f,fx,fpx,fpy,fpz) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz do i=1,mx ff=cos(i*2.*pi/mx) fx(i)=cos((i+.5)*2.*pi/mz) do j=1,my f(i,j,k)=ff fpx(i,j,k)=0. fpy(i,j,k)=0. fpz(i,j,k)=0. enddo enddo enddo call dtime(cpu) fpx = xup(f) call dtime(cpu) e=0. do i=1,mx e=amax1(e,abs(fx(i)-fpx(i,1,1))) enddo t=cpu(1) s=cpu(2) print *,'xup:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! y-test c$doacross local(i,j,k,ff), shared(f,fy) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz do j=1,my ff=cos(j*2.*pi/my) fy(j)=cos((j+.5)*2.*pi/my) do i=1,mx f(i,j,k)=ff enddo enddo enddo call dtime(cpu) fpy = yup(f) call dtime(cpu) e=0. do j=1,my e=amax1(e,abs(fy(j)-fpy(1,j,1))) enddo t=t+cpu(1) s=s+cpu(2) print *,'yup:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! z-test c$doacross local(i,j,k,ff), shared(f,fz) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz ff=cos(k*2.*pi/mz) fz(k)=cos((k+.5)*2.*pi/mz) do j=1,my do i=1,mx f(i,j,k)=ff enddo enddo enddo call dtime(cpu) fpz = zup(f) call dtime(cpu) e=0. do k=1,mz e=amax1(e,abs(fz(k)-fpz(1,1,k))) enddo t=t+cpu(1) s=s+cpu(2) print *,'zup:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! x-test c$doacross local(i,j,k,ff), shared(f,fx,fpx,fpy,fpz) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz do i=1,mx ff=cos(i*2.*pi/mx) fx(i)=cos((i-.5)*2.*pi/mz) do j=1,my f(i,j,k)=ff fpx(i,j,k)=0. fpy(i,j,k)=0. fpz(i,j,k)=0. enddo enddo enddo call dtime(cpu) fpx = xdn(f) call dtime(cpu) e=0. do i=1,mx e=amax1(e,abs(fx(i)-fpx(i,1,1))) enddo t=cpu(1) s=cpu(2) print *,'xdn:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! y-test c$doacross local(i,j,k,ff), shared(f,fy) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz do j=1,my ff=cos(j*2.*pi/my) fy(j)=cos((j-.5)*2.*pi/my) do i=1,mx f(i,j,k)=ff enddo enddo enddo call dtime(cpu) fpy = ydn(f) call dtime(cpu) e=0. do j=1,my e=amax1(e,abs(fy(j)-fpy(1,j,1))) enddo t=t+cpu(1) s=s+cpu(2) print *,'ydn:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! z-test c$doacross local(i,j,k,ff), shared(f,fz) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz ff=cos(k*2.*pi/mz) fz(k)=cos((k-.5)*2.*pi/mz) do j=1,my do i=1,mx f(i,j,k)=ff enddo enddo enddo call dtime(cpu) fpz = zdn(f) call dtime(cpu) e=0. do k=1,mz e=amax1(e,abs(fz(k)-fpz(1,1,k))) enddo t=t+cpu(1) s=s+cpu(2) print *,'zdn:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! x-test c$doacross local(i,j,k,ff), shared(f,fx,fpx,fpy,fpz) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz do i=1,mx ff=sin(i*2.*pi/mx) fx(i)=cos((i+.5)*2.*pi/mz) do j=1,my f(i,j,k)=ff fpx(i,j,k)=0. fpy(i,j,k)=0. fpz(i,j,k)=0. enddo enddo enddo call dtime(cpu) fpx = ddxup(f) call dtime(cpu) e=0. do i=1,mx e=amax1(e,abs(fx(i)-fpx(i,1,1))) enddo t=cpu(1) s=cpu(2) print *,'ddxup:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! y-test c$doacross local(i,j,k,ff), shared(f,fy) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz do j=1,my ff=sin(j*2.*pi/my) fy(j)=cos((j+.5)*2.*pi/my) do i=1,mx f(i,j,k)=ff enddo enddo enddo call dtime(cpu) fpy = ddyup(f) call dtime(cpu) e=0. do j=1,my e=amax1(e,abs(fy(j)-fpy(1,j,1))) enddo t=t+cpu(1) s=s+cpu(2) print *,'ddyup:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! z-test c$doacross local(i,j,k,ff), shared(f,fz) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz ff=sin(k*2.*pi/mz) fz(k)=cos((k+.5)*2.*pi/mz) do j=1,my do i=1,mx f(i,j,k)=ff enddo enddo enddo call dtime(cpu) fpz = ddzup(f) call dtime(cpu) e=0. do k=1,mz e=amax1(e,abs(fz(k)-fpz(1,1,k))) enddo t=t+cpu(1) s=s+cpu(2) print *,'ddzup:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! x-test c$doacross local(i,j,k,ff), shared(f,fx,fpx,fpy,fpz) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz do i=1,mx ff=sin(i*2.*pi/mx) fx(i)=cos((i-.5)*2.*pi/mz) do j=1,my f(i,j,k)=ff fpx(i,j,k)=0. fpy(i,j,k)=0. fpz(i,j,k)=0. enddo enddo enddo call dtime(cpu) fpx = ddxdn(f) call dtime(cpu) e=0. do i=1,mx e=amax1(e,abs(fx(i)-fpx(i,1,1))) enddo t=cpu(1) s=cpu(2) print *,'ddxdn:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! y-test c$doacross local(i,j,k,ff), shared(f,fy) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz do j=1,my ff=sin(j*2.*pi/my) fy(j)=cos((j-.5)*2.*pi/my) do i=1,mx f(i,j,k)=ff enddo enddo enddo call dtime(cpu) fpy = ddydn(f) call dtime(cpu) e=0. do j=1,my e=amax1(e,abs(fy(j)-fpy(1,j,1))) enddo t=t+cpu(1) s=s+cpu(2) print *,'ddydn:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e ! z-test c$doacross local(i,j,k,ff), shared(f,fz) c$& , affinity (k) = data(f(1,1,k)) do k=1,mz ff=sin(k*2.*pi/mz) fz(k)=cos((k-.5)*2.*pi/mz) do j=1,my do i=1,mx f(i,j,k)=ff enddo enddo enddo call dtime(cpu) fpz = ddzdn(f) call dtime(cpu) e=0. do k=1,mz e=amax1(e,abs(fz(k)-fpz(1,1,k))) enddo t=t+cpu(1) s=s+cpu(2) print *,'ddzdn:',mw*8e-6/cpu(1),mw*8e-6/(cpu(1)+cpu(2)),e print *,mw*8e-6*3/(t+s),' Mfl/s, ',t,s,' sec' end