Hellow Everyone.
How is the program parallelize better?
Data
[codebox]int NIJ=271;
double EPSVN;
F(NIJ,NIJ)
A(NIJ,NIJ)
B(NIJ,NIJ)
UUU(NIJ,NIJ)
AT(NIJ,NIJ)
BT(NIJ,NIJ)
C(NIJ,NIJ)
WUU(NIJ,NIJ)
GANJ(NIJ)
DNJ(NIJ)
ALTI1(NIJ)
BETI1(NIJ)
GATIN(NIJ)
DTIN(NIJ)
AF(NIJ)
BF(NIJ)
YPR(NIJ)
All massive already into device memory.
[/codebox]
Code
[codebox] ITERZ=0
DO J=1,NIJ
DO I=1,NIJ
WUU(I,J)=UUU(I,J)
END DO
END DO
C===>
OMEGA=0.5
2 ITERZ=ITERZ+1
DO J=1,NIJ
UUU(NI,J)=UUU(NI1,J)*GANJ(J)+DNJ(J)
END DO
C===> LOOP ON THE LINES “I”
DO 3 II=2,NIJ
I=NI-II+1
C===> STEP1
DO J=2,NJ1
APR(J)=AT(I,J-1)
BPR(J)=BT(I,J-1)
CPR(J)=C(I,J-1)
FPR(J)=F(I,J)+A(I,J)*UUU(I-1,J)+B(I,J)*UUU(I+1,J)
END DO
C========================================>
A1=ALTI1(I)
B1=BETI1(I)
A2=GATIN(I)
B2=DTIN(I)
AF(2)=A1
BF(2)=B1
C
DO L=2,NJ1
Z=1./(CPR(L)-AF(L)*APR(L))
AF(L+1)=BPR(L+1)*Z
BF(L+1)=(APR(L+1)*BF(L)+FPR(L))*Z
END DO
C
YPR(NJ)=(B2+A2*BF(NJ))/(1.-A2*AF(NJ-2))
C
DO LL=2,NJ
L=NJ-LL+1
YPR(L)=AF(L-1)*YPR(L+1)+BF(L-1)
END DO
C===> PROGONKA: END
C========================================>
C===> STEP2
DO J=1,NIJ
UUU(I,J)=YPR(J)*OMEGA+(1.-OMEGA)*WUU(I,J)
END DO
3 CONTINUE
C==>
DO J=1,NIJ
UUU(1,J)=UUU(2,J)*AL1J(J)+BE1J(J)
END DO
C===>
EPSZ=0.
DO J=1,NIJ
DO I=1,NIJ
WZ=ABS(UUU(I,J))
IF(WZ.GT.1.0E-05) EPSZ=DMAX1(EPSZ,ABS((UUU(I,J)-WUU(I,J))/WZ))
WUU(I,J)=UUU(I,J)
END DO
END DO
C===>
IF(EPSZ.GT.EPSVN) GOTO 2
[/codebox]