Mercurial > hg > CbC > CbC_gcc
view libgomp/testsuite/libgomp.fortran/appendix-a/a.16.1.f90 @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | a06113de4d67 |
children |
line wrap: on
line source
! { dg-do run } REAL FUNCTION WORK1(I) INTEGER I WORK1 = 1.0 * I RETURN END FUNCTION WORK1 REAL FUNCTION WORK2(I) INTEGER I WORK2 = 2.0 * I RETURN END FUNCTION WORK2 SUBROUTINE SUBA16(X, Y, INDEX, N) REAL X(*), Y(*) INTEGER INDEX(*), N INTEGER I !$OMP PARALLEL DO SHARED(X, Y, INDEX, N) DO I=1,N !$OMP ATOMIC X(INDEX(I)) = X(INDEX(I)) + WORK1(I) Y(I) = Y(I) + WORK2(I) ENDDO END SUBROUTINE SUBA16 PROGRAM A16 REAL X(1000), Y(10000) INTEGER INDEX(10000) INTEGER I DO I=1,10000 INDEX(I) = MOD(I, 1000) + 1 Y(I) = 0.0 ENDDO DO I = 1,1000 X(I) = 0.0 ENDDO CALL SUBA16(X, Y, INDEX, 10000) DO I = 1,10 PRINT *, "X(", I, ") = ", X(I), ", Y(", I, ") = ", Y(I) ENDDO END PROGRAM A16