brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 65c6293 Raw
315 lines · plain
1! RUN: %python %S/../test_errors.py %s %flang -fopenacc2 3! Check OpenACC clause validity for the following construct and directive:4!   2.11 Kernels Loop5 6program openacc_kernels_loop_validity7 8  implicit none9 10  type atype11    real(8), dimension(10) :: arr12    real(8) :: s13  end type atype14 15  integer :: i, j, b, gang_size, vector_size, worker_size16  integer, parameter :: N = 25617  integer, dimension(N) :: c18  logical, dimension(N) :: d, e19  integer :: async120  integer :: wait1, wait221  real :: reduction_r22  logical :: reduction_l23  real(8), dimension(N, N) :: aa, bb, cc24  real(8), dimension(:), allocatable :: dd25  real(8), pointer :: p26  logical :: ifCondition = .TRUE.27  type(atype) :: t28  type(atype), dimension(10) :: ta29 30  real(8), dimension(N) :: a, f, g, h31 32  !$acc kernels loop33  do i = 1, N34    a(i) = 3.14d035  end do36 37  !$acc kernels loop38  do i = 1, N39    a(i) = 3.14d040  end do41  !$acc end kernels loop42 43  !$acc kernels loop44  do i = 1, N45    a(i) = 3.14d046  end do47  !$acc end kernels loop48 49  !$acc kernels loop num_gangs(8)50  do i = 1, N51    a(i) = 3.14d052  end do53 54  !$acc kernels loop num_gangs(gang_size)55  do i = 1, N56    a(i) = 3.14d057  end do58 59  !$acc kernels loop num_gangs(8)60  do i = 1, N61    a(i) = 3.14d062  end do63 64  !$acc kernels loop num_workers(worker_size)65  do i = 1, N66    a(i) = 3.14d067  end do68 69  !$acc kernels loop num_workers(8)70  do i = 1, N71    a(i) = 3.14d072  end do73 74  !$acc kernels loop vector_length(vector_size)75  do i = 1, N76    a(i) = 3.14d077  end do78 79  !$acc kernels loop vector_length(128)80  do i = 1, N81    a(i) = 3.14d082  end do83 84  !$acc kernels loop num_gangs(gang_size)85  do i = 1, N86    a(i) = 3.14d087  end do88 89 90  !$acc kernels loop if(.TRUE.)91  do i = 1, N92    a(i) = 3.14d093  end do94 95  !$acc kernels loop if(ifCondition)96  do i = 1, N97    a(i) = 3.14d098  end do99 100  !$acc kernels loop101  do i = 1, N102    a(i) = 3.14d0103  end do104  !ERROR: Unmatched END SERIAL LOOP directive105  !$acc end serial loop106 107  !ERROR: Clause IF is not allowed after clause DEVICE_TYPE on the KERNELS LOOP directive108  !$acc kernels loop device_type(*) if(.TRUE.)109  do i = 1, N110    a(i) = 3.14d0111  end do112  !$acc end kernels loop113 114  !$acc kernels loop async115  do i = 1, N116    a(i) = 3.14d0117  end do118 119  !$acc kernels loop async(1)120  do i = 1, N121    a(i) = 3.14d0122  end do123 124  !$acc kernels loop async(async1)125  do i = 1, N126    a(i) = 3.14d0127  end do128 129  !$acc kernels loop wait(wait1)130  do i = 1, N131    a(i) = 3.14d0132  end do133 134  !$acc kernels loop wait(wait1, wait2)135  do i = 1, N136    a(i) = 3.14d0137  end do138 139  !$acc kernels loop wait(wait1) wait(wait2)140  do i = 1, N141    a(i) = 3.14d0142  end do143 144  !$acc kernels loop wait(1, 2) async(3)145  do i = 1, N146    a(i) = 3.14d0147  end do148 149  !$acc kernels loop wait(queues: 1, 2) async(3)150  do i = 1, N151    a(i) = 3.14d0152  end do153 154  !$acc kernels loop wait(devnum: 1: 1, 2) async(3)155  do i = 1, N156    a(i) = 3.14d0157  end do158 159  !$acc kernels loop wait(devnum: 1: queues: 1, 2) async(3)160  do i = 1, N161    a(i) = 3.14d0162  end do163 164  !$acc kernels loop num_gangs(8)165  do i = 1, N166    a(i) = 3.14d0167  end do168 169  !$acc kernels loop num_workers(8)170  do i = 1, N171    a(i) = 3.14d0172  end do173 174  !$acc kernels loop vector_length(128)175  do i = 1, N176    a(i) = 3.14d0177  end do178 179  !$acc kernels loop if(.true.)180  do i = 1, N181    a(i) = 3.14d0182  end do183 184  !$acc kernels loop if(ifCondition)185  do i = 1, N186    a(i) = 3.14d0187  end do188 189  !ERROR: At most one IF clause can appear on the KERNELS LOOP directive190  !$acc kernels loop if(.true.) if(ifCondition)191  do i = 1, N192    a(i) = 3.14d0193  end do194 195  !$acc kernels loop self196  do i = 1, N197    a(i) = 3.14d0198  end do199 200  !$acc kernels loop self(.true.)201  do i = 1, N202    a(i) = 3.14d0203  end do204 205  !$acc kernels loop self(ifCondition)206  do i = 1, N207    a(i) = 3.14d0208  end do209 210  !$acc kernels loop copy(aa) copyin(bb) copyout(cc)211  do i = 1, N212    a(i) = 3.14d0213  end do214 215  !$acc kernels loop copy(aa, bb) copyout(zero: cc)216  do i = 1, N217    a(i) = 3.14d0218  end do219 220  !$acc kernels loop present(aa, bb) create(cc)221  do i = 1, N222    a(i) = 3.14d0223  end do224 225  !$acc kernels loop copyin(readonly: aa, bb) create(zero: cc)226  do i = 1, N227    a(i) = 3.14d0228  end do229 230  !$acc kernels loop deviceptr(aa, bb) no_create(cc)231  do i = 1, N232    a(i) = 3.14d0233  end do234 235  !ERROR: Argument `aa` on the ATTACH clause must be a variable or array with the POINTER or ALLOCATABLE attribute236  !$acc kernels loop attach(aa, dd, p)237  do i = 1, N238    a(i) = 3.14d0239  end do240 241  !$acc kernels loop private(aa, bb, cc)242  do i = 1, N243    a(i) = 3.14d0244  end do245 246  !$acc kernels loop default(none) private(N, a)247  do i = 1, N248    a(i) = 3.14d0249  end do250 251  !$acc kernels loop default(none)252  !ERROR: The DEFAULT(NONE) clause requires that 'n' must be listed in a data-mapping clause253  do i = 1, N254    !ERROR: The DEFAULT(NONE) clause requires that 'a' must be listed in a data-mapping clause255    a(i) = 3.14d0256  end do257 258  !$acc kernels loop default(present)259  do i = 1, N260    a(i) = 3.14d0261  end do262 263  !ERROR: At most one DEFAULT clause can appear on the KERNELS LOOP directive264  !$acc kernels loop default(none) default(present)265  do i = 1, N266    a(i) = 3.14d0267  end do268 269  !$acc kernels loop device_type(*)270  do i = 1, N271    a(i) = 3.14d0272  end do273 274  !$acc kernels loop device_type(multicore)275  do i = 1, N276    a(i) = 3.14d0277  end do278 279  !$acc kernels loop device_type(host, multicore)280  do i = 1, N281    a(i) = 3.14d0282  end do283 284  !$acc kernels loop device_type(*) async wait num_gangs(8) num_workers(8) vector_length(128)285  do i = 1, N286    a(i) = 3.14d0287  end do288 289  !$acc kernels loop device_type(*) async290  do i = 1, N291    a(i) = 3.14d0292  end do293 294  !ERROR: Clause IF is not allowed after clause DEVICE_TYPE on the KERNELS LOOP directive295  !$acc kernels loop device_type(*) if(.TRUE.)296  do i = 1, N297    a(i) = 3.14d0298  end do299 300  !$acc parallel loop301  do i = 1, N302    if(i == 10) cycle303  end do304 305  !$acc kernels loop async(1) device_type(nvidia) async(3)306  do i = 1, n307  end do308 309!ERROR: At most one ASYNC clause can appear on the KERNELS LOOP directive or in group separated by the DEVICE_TYPE clause310  !$acc kernels loop async(1) device_type(nvidia) async async311  do i = 1, n312  end do313 314end program openacc_kernels_loop_validity315