Ronny
2004-04-10 16:51:01 UTC
Hi all,I'm working on some fortran program to boost its performance.
I use the OpenMP Fortran API to modify source code. I compiled it
with Intel Fortran Compiler v8.0 with -openmp enabled.
But it shows no improvements , actually some slowdown on my
Intel Pentium4 2.8GHz E (Prescott) with Hyper-Threading enabled.
This is the significant part of the program:
COMMON U(N1,N2), V(N1,N2), P(N1,N2)
PCHECK = 0.0D0
UCHECK = 0.0D0
VCHECK = 0.0D0
..........
!$OMP PARALLEL DO REDUCTION(+:PCHECK,UCHECK,VCHECK)
!$OMP+schedule(dynamic,1)
DO 3500 ICHECK = 1,M
DO 4500 JCHECK = 1, N
PCHECK = PCHECK + (P(ICHECK,JCHECK))
UCHECK = UCHECK + (U(ICHECK,JCHECK))
VCHECK = VCHECK + (V(ICHECK,JCHECK))
4500 CONTINUE
U(ICHECK,ICHECK) = U(ICHECK,ICHECK)
1 * ( MOD (ICHECK, 100) /100.)
3500 CONTINUE
!$OMP END PARALLEL DO
...........
I find that if I thread this code,my program does much worse.
Is there any programming error or tips on programming OpenMP?
Thanks
I use the OpenMP Fortran API to modify source code. I compiled it
with Intel Fortran Compiler v8.0 with -openmp enabled.
But it shows no improvements , actually some slowdown on my
Intel Pentium4 2.8GHz E (Prescott) with Hyper-Threading enabled.
This is the significant part of the program:
COMMON U(N1,N2), V(N1,N2), P(N1,N2)
PCHECK = 0.0D0
UCHECK = 0.0D0
VCHECK = 0.0D0
..........
!$OMP PARALLEL DO REDUCTION(+:PCHECK,UCHECK,VCHECK)
!$OMP+schedule(dynamic,1)
DO 3500 ICHECK = 1,M
DO 4500 JCHECK = 1, N
PCHECK = PCHECK + (P(ICHECK,JCHECK))
UCHECK = UCHECK + (U(ICHECK,JCHECK))
VCHECK = VCHECK + (V(ICHECK,JCHECK))
4500 CONTINUE
U(ICHECK,ICHECK) = U(ICHECK,ICHECK)
1 * ( MOD (ICHECK, 100) /100.)
3500 CONTINUE
!$OMP END PARALLEL DO
...........
I find that if I thread this code,my program does much worse.
Is there any programming error or tips on programming OpenMP?
Thanks