96 lines · plain
1! RUN: %flang_fc1 -fsyntax-only -fopenacc %s 2>&12C Test file for OpenACC directives in fixed-form Fortran3 PROGRAM ACCTEST4 IMPLICIT NONE5 INTEGER :: N, I, J6 PARAMETER (N=100)7 REAL :: A(N), B(N), C(N), D(N)8 REAL :: SUM9 10C Initialize arrays11 DO I = 1, N12 A(I) = I * 1.013 B(I) = I * 2.014 C(I) = 0.015 D(I) = 1.016 END DO17 18C Basic data construct using C$ACC19C$ACC DATA COPYIN(A,B) COPYOUT(C)20 DO I = 1, N21 C(I) = A(I) + B(I)22 END DO23C$ACC END DATA24 25* Parallel construct with loop using *$ACC26*$ACC PARALLEL PRESENT(A,B,C)27*$ACC LOOP28 DO I = 1, N29 C(I) = C(I) * 2.030 END DO31*$ACC END PARALLEL32 33C Nested loops with collapse - C$ACC style34C$ACC PARALLEL LOOP COLLAPSE(2)35 DO I = 1, N36 DO J = 1, N37 A(J) = A(J) + B(J)38 END DO39 END DO40C$ACC END PARALLEL LOOP41 42* Combined parallel loop with reduction - *$ACC style43 SUM = 0.044*$ACC PARALLEL LOOP REDUCTION(+:SUM)45 DO I = 1, N46 SUM = SUM + C(I)47 END DO48*$ACC END PARALLEL LOOP49 50C Kernels construct - C$ACC with continuation51C$ACC KERNELS 52C$ACC+ COPYOUT(A)53 DO I = 1, N54 A(I) = A(I) * 2.055 END DO56C$ACC END KERNELS57 58* Data construct with update - *$ACC with continuation59*$ACC DATA COPY(B)60*$ACC+ PRESENT(D)61 B(1) = 999.062*$ACC UPDATE HOST(B(1:1))63 PRINT *, 'B(1) = ', B(1)64*$ACC END DATA65 66C Mixed style directives in nested constructs67C$ACC DATA COPY(A,B,C)68*$ACC PARALLEL LOOP69 DO I = 1, N70 A(I) = B(I) + C(I)71 END DO72*$ACC END PARALLEL LOOP73C$ACC END DATA74 75* Subroutine call within data region - *$ACC style76*$ACC DATA COPY(A,B,C)77 CALL SUB1(A, B, C, N)78*$ACC END DATA79 80 PRINT *, 'Sum = ', SUM81 END PROGRAM82 83C Subroutine with mixed ACC directive styles84 SUBROUTINE SUB1(X, Y, Z, M)85 INTEGER M, I86 REAL X(M), Y(M), Z(M)87 88*$ACC PARALLEL PRESENT(X,Y)89C$ACC LOOP PRIVATE(I)90 DO I = 1, M91 Z(I) = X(I) + Y(I)92 END DO93C$ACC END LOOP94*$ACC END PARALLEL95 RETURN96 END SUBROUTINE