C *********************************************************** C Fortran file translated from WHIRL Thu Aug 16 17:12:04 2001 C *********************************************************** CSGI$ start 1 PROGRAM MAIN IMPLICIT NONE C C **** Variables and functions **** C REAL(8) CHECKSUM REAL(8) DATA(128_8, 128_8, 128_8) INTEGER(4) I INTEGER(4) ISTEP INTEGER(4) J INTEGER(4) K REAL(4) T REAL(4) T2(2_8) INTEGER(8) t$5(5_8) SAVE t$5 INTEGER(8) t$7(4_8) SAVE t$7 REAL(8) t$9 REAL(4) t$11 EXTERNAL dtime REAL(4) dtime EXTERNAL rand REAL(8) rand EXTERNAL _END INTEGER(4) __mp_sug_numthreads_func$ EXTERNAL __mp_sug_numthreads_func$ C C **** Temporary variables **** C REAL(4) tmp0 INTEGER(4) J0 INTEGER(4) K2 INTEGER(4) I0 INTEGER(4) K0 INTEGER(4) I1 INTEGER(4) J1 INTEGER(4) K1 INTEGER(4) J2 INTEGER(4) I2 INTEGER(8) tmp1 C C **** Initializers **** C DATA(t$5(tmp1), tmp1 = 1, 5, 1) / 3542135499133506665_8, 7882770632552506934_8, 3329053096116708707_8, 8029465631389188096_8, 0_8 / DATA(t$7(tmp1), tmp1 = 1, 4, 1) / 3614193093171430248_8, 7305801164160580128_8, 2822685425258280750_8, 3544377986717319168_8 / C C **** statements **** C CSGI$ start 2 DO K = 1, 128, 1 CSGI$ start 3 DO J = 1, 128, 1 CSGI$ start 4 DO I = 1, 128, 1 t$9 = rand() DATA(I, J, K) = t$9 END DO CSGI$ end 4 END DO CSGI$ end 3 END DO CSGI$ end 2 tmp0 = dtime(T2) CSGI$ start 5 DO ISTEP = 1, 2, 1 C PARALLEL DO will be converted to SUBROUTINE __mpdo_MAIN__1 CSGI$ start 6 C$OMP PARALLEL DO private(J0, K2) DO K2 = 1, 128, 1 CSGI$ start 7 DO J0 = 1, 128, 1 CALL xsweep(DATA(1, J0, K2), 1, 128) END DO CSGI$ end 7 END DO CSGI$ end 6 C PARALLEL DO will be converted to SUBROUTINE __mpdo_MAIN__2 CSGI$ start 8 C$OMP PARALLEL DO private(I0, K0) DO K0 = 1, 128, 1 CSGI$ start 9 DO I0 = 1, 128, 1 CALL ysweep(DATA(I0, 1, K0), 128, 128) END DO CSGI$ end 9 END DO CSGI$ end 8 C PARALLEL DO will be converted to SUBROUTINE __mpdo_MAIN__3 CSGI$ start 10 C$OMP PARALLEL DO private(I1, J1) DO J1 = 1, 128, 1 CSGI$ start 11 DO I1 = 1, 128, 1 CALL zsweep(DATA(I1, J1, 1), 16384, 128) END DO CSGI$ end 11 END DO CSGI$ end 10 END DO CSGI$ end 5 t$11 = dtime(T2) T = t$11 WRITE(6, t$5) T CHECKSUM = 0.0D00 C PARALLEL DO will be converted to SUBROUTINE __mpdo_MAIN__4 CSGI$ start 12 C$OMP PARALLEL DO if((__mp_sug_numthreads_func$() .GE. 2)), private(K1, C$& J2, I2), shared(DATA), reduction ( + : CHECKSUM) DO K1 = 1, 128, 1 CSGI$ start 13 DO J2 = 1, 128, 1 CSGI$ start 14 DO I2 = 1, 128, 1 CHECKSUM = (DATA(I2, J2, K1) + CHECKSUM) END DO CSGI$ end 14 END DO CSGI$ end 13 END DO CSGI$ end 12 WRITE(6, t$7) CHECKSUM CALL _END() END CSGI$ end 1 CSGI$ start 28 SUBROUTINE xsweep(V, IS, N) IMPLICIT NONE REAL(8) V(t$12) INTEGER(4) IS INTEGER(4) N C C **** Variables and functions **** C INTEGER(8) t$12 INTEGER(8) t$13 C C **** Temporary variables **** C INTEGER(4) I0 INTEGER(4) do_ivar C C **** statements **** C t$12 = ((IS *(N + -1)) + 1) t$13 = MAX(((IS *(N + -1)) + 1), 0) CSGI$ start 29 DO I0 = 2, N, 1 V((IS *(I0 + -1)) + 1) = (V((IS *(I0 + -1)) + 1) +(V((IS *(I0 + -2)) + 1) * 5.0D-01)) END DO CSGI$ end 29 CSGI$ start 30 DO do_ivar = 0, (-2 + N), 1 V((IS *((N - do_ivar) + -2)) + 1) = (V((IS *((N - do_ivar) + -2)) + 1) -(V((IS *((N - do_ivar) + -1)) + 1) * 5.0D-01)) END DO CSGI$ end 30 RETURN END SUBROUTINE CSGI$ end 28 CSGI$ start 31 SUBROUTINE ysweep(V, IS, N) IMPLICIT NONE REAL(8) V(t$14) INTEGER(4) IS INTEGER(4) N C C **** Variables and functions **** C INTEGER(8) t$14 INTEGER(8) t$15 C C **** Temporary variables **** C INTEGER(4) I0 INTEGER(4) do_ivar C C **** statements **** C t$14 = ((IS *(N + -1)) + 1) t$15 = MAX(((IS *(N + -1)) + 1), 0) CSGI$ start 32 DO I0 = 2, N, 1 V((IS *(I0 + -1)) + 1) = (V((IS *(I0 + -1)) + 1) +(V((IS *(I0 + -2)) + 1) * 5.0D-01)) END DO CSGI$ end 32 CSGI$ start 33 DO do_ivar = 0, (-2 + N), 1 V((IS *((N - do_ivar) + -2)) + 1) = (V((IS *((N - do_ivar) + -2)) + 1) -(V((IS *((N - do_ivar) + -1)) + 1) * 5.0D-01)) END DO CSGI$ end 33 RETURN END SUBROUTINE CSGI$ end 31 CSGI$ start 34 SUBROUTINE zsweep(V, IS, N) IMPLICIT NONE REAL(8) V(t$16) INTEGER(4) IS INTEGER(4) N C C **** Variables and functions **** C INTEGER(8) t$16 INTEGER(8) t$17 C C **** Temporary variables **** C INTEGER(4) I0 INTEGER(4) do_ivar C C **** statements **** C t$16 = ((IS *(N + -1)) + 1) t$17 = MAX(((IS *(N + -1)) + 1), 0) CSGI$ start 35 DO I0 = 2, N, 1 V((IS *(I0 + -1)) + 1) = (V((IS *(I0 + -1)) + 1) +(V((IS *(I0 + -2)) + 1) * 5.0D-01)) END DO CSGI$ end 35 CSGI$ start 36 DO do_ivar = 0, (-2 + N), 1 V((IS *((N - do_ivar) + -2)) + 1) = (V((IS *((N - do_ivar) + -2)) + 1) -(V((IS *((N - do_ivar) + -1)) + 1) * 5.0D-01)) END DO CSGI$ end 36 RETURN END SUBROUTINE CSGI$ end 34