| ! { dg-do compile } |
| |
| module target1 |
| interface |
| subroutine dosomething (a, n, m) |
| integer :: a (:), n, m |
| !$omp declare target |
| end subroutine dosomething |
| end interface |
| contains |
| subroutine foo (n, o, p, q, r, pp) |
| integer :: n, o, p, q, r, s, i, j |
| integer :: a (2:o) |
| integer, pointer :: pp |
| !$omp target data device (n + 1) if (n .ne. 6) map (tofrom: n, r) |
| !$omp target device (n + 1) if (n .ne. 6) map (from: n) map (alloc: a(2:o)) |
| call dosomething (a, n, 0) |
| !$omp end target |
| !$omp target teams device (n + 1) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & if (n .ne. 6)map (from: n) map (alloc: a(2:o)) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| !$omp end target teams |
| !$omp target teams distribute device (n + 1) num_teams (n + 4) collapse (2) & |
| !$omp & if (n .ne. 6)map (from: n) map (alloc: a(2:o)) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| end do |
| !$omp target teams distribute device (n + 1) num_teams (n + 4) & |
| !$omp & if (n .ne. 6)map (from: n) map (alloc: a(2:o)) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| end do |
| !$omp end target teams distribute |
| !$omp target teams distribute parallel do device (n + 1) num_teams (n + 4) & |
| !$omp & if (n .ne. 6)map (from: n) map (alloc: a(2:o)) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) collapse (2) & |
| !$omp & num_threads (n + 4) proc_bind (spread) lastprivate (s) & |
| !$omp & schedule (static, 8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| s = i * 10 + j |
| end do |
| end do |
| !$omp target teams distribute parallel do device (n + 1) num_teams (n + 4) & |
| !$omp & if (n .ne. 6)map (from: n) map (alloc: a(2:o)) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) & |
| !$omp & proc_bind (master) lastprivate (s) schedule (static, 8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| s = i * 10 |
| end do |
| !$omp end target teams distribute parallel do |
| !$omp target teams distribute parallel do simd device (n + 1) & |
| !$omp & if (n .ne. 6)map (from: n) map (alloc: a(2:o)) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) collapse (2) & |
| !$omp & num_threads (n + 4) proc_bind (spread) lastprivate (s) & |
| !$omp & schedule (static, 8) num_teams (n + 4) safelen(8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| a(2+i*10+j) = p + q |
| s = i * 10 + j |
| end do |
| end do |
| !$omp target teams distribute parallel do simd device (n + 1) & |
| !$omp & if (n .ne. 6)map (from: n) map (alloc: a(2:o)) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) & |
| !$omp & proc_bind (master) lastprivate (s) schedule (static, 8) & |
| !$omp & num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4) |
| do i = 1, 10 |
| r = r + 1 |
| p = q |
| a(1+i) = p + q |
| s = i * 10 |
| end do |
| !$omp end target teams distribute parallel do simd |
| !$omp target teams distribute simd device (n + 1) & |
| !$omp & if (n .ne. 6)map (from: n) map (alloc: a(2:o)) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) collapse (2) & |
| !$omp & lastprivate (s) num_teams (n + 4) safelen(8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| a(2+i*10+j) = p + q |
| s = i * 10 + j |
| end do |
| end do |
| !$omp target teams distribute simd device (n + 1) & |
| !$omp & if (n .ne. 6)map (from: n) map (alloc: a(2:o)) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) lastprivate (s) & |
| !$omp & num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4) |
| do i = 1, 10 |
| r = r + 1 |
| p = q |
| a(1+i) = p + q |
| s = i * 10 |
| end do |
| !$omp end target teams distribute simd |
| !$omp target device (n + 1) if (n .ne. 6)map (from: n) map (alloc: a(2:o)) |
| !$omp teams num_teams (n + 4) thread_limit (n * 2) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| !$omp end teams |
| !$omp end target |
| !$omp target device (n + 1) if (n .ne. 6)map (from: n) map (alloc: a(2:o)) |
| !$omp teams distribute num_teams (n + 4) collapse (2) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| end do |
| !$omp end target |
| !$omp target device (n + 1) if (n .ne. 6)map (from: n) map (alloc: a(2:o)) |
| !$omp teams distribute num_teams (n + 4) default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| end do |
| !$omp end teams distribute |
| !$omp end target |
| !$omp target device (n + 1) if (n .ne. 6)map (from: n) map (alloc: a(2:o)) |
| !$omp teams distribute parallel do num_teams (n + 4) & |
| !$omp & if (n .ne. 6) default(shared) schedule (static, 8) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) collapse (2) & |
| !$omp & num_threads (n + 4) proc_bind (spread) lastprivate (s) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| s = i * 10 + j |
| end do |
| end do |
| !$omp end target |
| !$omp target device (n + 1) if (n .ne. 6)map (from: n) map (alloc: a(2:o)) |
| !$omp teams distribute parallel do num_teams (n + 4)if(n.ne.6)default(shared)& |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) & |
| !$omp & proc_bind (master) lastprivate (s) schedule (static, 8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| s = i * 10 |
| end do |
| !$omp end teams distribute parallel do |
| !$omp end target |
| !$omp target device (n + 1) if (n .ne. 6)map (from: n) map (alloc: a(2:o)) |
| !$omp teams distribute parallel do simd if(n.ne.6)default(shared)& |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) collapse (2) & |
| !$omp & num_threads (n + 4) proc_bind (spread) lastprivate (s) & |
| !$omp & schedule (static, 8) num_teams (n + 4) safelen(8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| a(2+i*10+j) = p + q |
| s = i * 10 + j |
| end do |
| end do |
| !$omp end target |
| !$omp target device (n + 1) if (n .ne. 6)map (from: n) map (alloc: a(2:o)) |
| !$omp teams distribute parallel do simd if (n .ne. 6)default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) & |
| !$omp & proc_bind (master) lastprivate (s) schedule (static, 8) & |
| !$omp & num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4) |
| do i = 1, 10 |
| r = r + 1 |
| p = q |
| a(1+i) = p + q |
| s = i * 10 |
| end do |
| !$omp end teams distribute parallel do simd |
| !$omp end target |
| !$omp target device (n + 1) if (n .ne. 6)map (from: n) map (alloc: a(2:o)) |
| !$omp teams distribute simd default(shared) safelen(8) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) collapse (2) & |
| !$omp & lastprivate (s) num_teams (n + 4) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| a(2+i*10+j) = p + q |
| s = i * 10 + j |
| end do |
| end do |
| !$omp end target |
| !$omp target device (n + 1) if (n .ne. 6)map (from: n) map (alloc: a(2:o)) |
| !$omp teams distribute simd default(shared) aligned (pp:4) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & thread_limit (n * 2) dist_schedule (static, 4) lastprivate (s) |
| do i = 1, 10 |
| r = r + 1 |
| p = q |
| a(1+i) = p + q |
| s = i * 10 |
| end do |
| !$omp end teams distribute simd |
| !$omp end target |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction ( + : r ) |
| !$omp distribute collapse (2) firstprivate (q) dist_schedule (static, 4) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| end do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute firstprivate (q) dist_schedule (static, 4) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| end do |
| !$omp end distribute |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute parallel do if (n .ne. 6) default(shared) & |
| !$omp & schedule (static, 8) private (p) firstprivate (q) & |
| !$omp & shared(n)reduction(+:r)dist_schedule(static,4)collapse(2)& |
| !$omp & num_threads (n + 4) proc_bind (spread) lastprivate (s) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| s = i * 10 + j |
| end do |
| end do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute parallel do if(n.ne.6)default(shared)& |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) num_threads (n + 4) & |
| !$omp & proc_bind (master) lastprivate (s) schedule (static, 8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| s = i * 10 |
| end do |
| !$omp end distribute parallel do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute parallel do simd if(n.ne.6)default(shared)& |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) collapse (2) safelen(8) & |
| !$omp & num_threads (n + 4) proc_bind (spread) lastprivate (s) & |
| !$omp & schedule (static, 8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| a(2+i*10+j) = p + q |
| s = i * 10 + j |
| end do |
| end do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute parallel do simd if (n .ne. 6)default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) num_threads (n + 4) & |
| !$omp & proc_bind (master) lastprivate (s) schedule (static, 8) & |
| !$omp & safelen(16) linear(i:1) aligned (pp:4) |
| do i = 1, 10 |
| r = r + 1 |
| p = q |
| a(1+i) = p + q |
| s = i * 10 |
| end do |
| !$omp end distribute parallel do simd |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute simd safelen(8) lastprivate(s) & |
| !$omp & private (p) firstprivate (q) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) collapse (2) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| a(2+i*10+j) = p + q |
| s = i * 10 + j |
| end do |
| end do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute simd aligned (pp:4) & |
| !$omp & private (p) firstprivate (q) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) lastprivate (s) |
| do i = 1, 10 |
| r = r + 1 |
| p = q |
| a(1+i) = p + q |
| s = i * 10 |
| end do |
| !$omp end distribute simd |
| !$omp end target teams |
| !$omp end target data |
| end subroutine |
| subroutine bar (n, o, p, r, pp) |
| integer :: n, o, p, q, r, s, i, j |
| integer :: a (2:o) |
| integer, pointer :: pp |
| common /blk/ i, j, q |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction ( + : r ) |
| !$omp distribute collapse (2) firstprivate (q) dist_schedule (static, 4) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| end do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute firstprivate (q) dist_schedule (static, 4) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| end do |
| !$omp end distribute |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute parallel do if (n .ne. 6) default(shared) & |
| !$omp & schedule (static, 8) private (p) firstprivate (q) & |
| !$omp & shared(n)reduction(+:r)dist_schedule(static,4)collapse(2)& |
| !$omp & num_threads (n + 4) proc_bind (spread) lastprivate (s) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| s = i * 10 + j |
| end do |
| end do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute parallel do if(n.ne.6)default(shared)& |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) num_threads (n + 4) & |
| !$omp & proc_bind (master) lastprivate (s) schedule (static, 8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| call dosomething (a, n, p + q) |
| end do |
| s = i * 10 |
| end do |
| !$omp end distribute parallel do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute parallel do simd if(n.ne.6)default(shared)& |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) collapse (2) safelen(8) & |
| !$omp & num_threads (n + 4) proc_bind (spread) lastprivate (s) & |
| !$omp & schedule (static, 8) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| a(2+i*10+j) = p + q |
| s = i * 10 + j |
| end do |
| end do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute parallel do simd if (n .ne. 6)default(shared) & |
| !$omp & private (p) firstprivate (q) shared (n) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) num_threads (n + 4) & |
| !$omp & proc_bind (master) lastprivate (s) schedule (static, 8) & |
| !$omp & safelen(16) linear(i:1) aligned (pp:4) |
| do i = 1, 10 |
| r = r + 1 |
| p = q |
| a(1+i) = p + q |
| s = i * 10 |
| end do |
| !$omp end distribute parallel do simd |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute simd safelen(8) lastprivate(s) & |
| !$omp & private (p) firstprivate (q) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) collapse (2) |
| do i = 1, 10 |
| do j = 1, 10 |
| r = r + 1 |
| p = q |
| a(2+i*10+j) = p + q |
| s = i * 10 + j |
| end do |
| end do |
| !$omp end target teams |
| !$omp target teams device (n + 1) if (n .ne. 6)map (from: n) & |
| !$omp & map (alloc: a(2:o)) num_teams (n + 4) thread_limit (n * 2) & |
| !$omp & default(shared) shared(n) private (p) reduction(+:r) |
| !$omp distribute simd aligned (pp:4) & |
| !$omp & private (p) firstprivate (q) reduction (+: r) & |
| !$omp & dist_schedule (static, 4) lastprivate (s) |
| do i = 1, 10 |
| r = r + 1 |
| p = q |
| a(1+i) = p + q |
| s = i * 10 |
| end do |
| !$omp end distribute simd |
| !$omp end target teams |
| end subroutine |
| end module |