| ! RUN: %python %S/test_errors.py %s %flang -fopenmp |
| ! Check OpenMP clause validity for the following directives: |
| ! 2.10 Device constructs |
| program main |
| |
| real(8) :: arrayA(256), arrayB(256) |
| integer :: N |
| |
| arrayA = 1.414 |
| arrayB = 3.14 |
| N = 256 |
| |
| !$omp task |
| !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region. |
| !$omp distribute |
| do i = 1, N |
| a = 3.14 |
| enddo |
| !$omp end distribute |
| !$omp end task |
| |
| !$omp teams |
| do i = 1, N |
| !ERROR: Only `DISTRIBUTE` or `PARALLEL` regions are allowed to be strictly nested inside `TEAMS` region. |
| !$omp task |
| do k = 1, N |
| a = 3.14 |
| enddo |
| !$omp end task |
| enddo |
| !$omp end teams |
| |
| !$omp teams |
| do i = 1, N |
| !$omp parallel |
| do k = 1, N |
| a = 3.14 |
| enddo |
| !$omp end parallel |
| enddo |
| !$omp end teams |
| |
| !$omp parallel |
| !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region. |
| !$omp distribute |
| do i = 1, N |
| a = 3.14 |
| enddo |
| !$omp end distribute |
| !$omp end parallel |
| |
| !$omp teams |
| !ERROR: Only `DISTRIBUTE` or `PARALLEL` regions are allowed to be strictly nested inside `TEAMS` region. |
| !$omp target |
| !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region. |
| !$omp distribute |
| do i = 1, 10 |
| j = j + 1 |
| end do |
| !$omp end distribute |
| !$omp end target |
| !$omp end teams |
| |
| !$omp teams |
| !$omp parallel |
| do k = 1,10 |
| print *, "hello" |
| end do |
| !$omp end parallel |
| !$omp distribute firstprivate(a) |
| do i = 1, 10 |
| j = j + 1 |
| end do |
| !$omp end distribute |
| !$omp end teams |
| |
| !$omp teams |
| !ERROR: Only `DISTRIBUTE` or `PARALLEL` regions are allowed to be strictly nested inside `TEAMS` region. |
| !$omp task |
| do k = 1,10 |
| print *, "hello" |
| end do |
| !$omp end task |
| !$omp distribute firstprivate(a) |
| do i = 1, 10 |
| j = j + 1 |
| end do |
| !$omp end distribute |
| !$omp end teams |
| |
| !$omp task |
| !$omp parallel |
| do k = 1,10 |
| print *, "hello" |
| end do |
| !$omp end parallel |
| !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region. |
| !$omp distribute firstprivate(a) |
| do i = 1, 10 |
| j = j + 1 |
| end do |
| !$omp end distribute |
| !$omp end task |
| end program main |