v++
Папка для загрузок, и пропущенный баг с настройками визуализатора.
This commit is contained in:
142
Downloads/236/domain.f
Normal file
142
Downloads/236/domain.f
Normal file
@@ -0,0 +1,142 @@
|
||||
program domain
|
||||
dimension u(9,9),f(9,9)
|
||||
! $SPF ANALYSIS (PRIVATE(gran1))
|
||||
dimension u1(0:10,0:10),f1(9,9),gran1(9)
|
||||
! $SPF ANALYSIS (PRIVATE(gran2))
|
||||
dimension u2(0:10,0:10),f2(9,9),gran2(9)
|
||||
! $SPF ANALYSIS (PRIVATE(g))
|
||||
dimension a(9,9),g(9)
|
||||
net = 10
|
||||
ntime = 2
|
||||
n = net - 1
|
||||
m = net / 2
|
||||
h = 1. / net
|
||||
r = 0.125
|
||||
tau = r * (h * h)
|
||||
r1 = 1 - 4 * r
|
||||
rr = 1 + 2 * r
|
||||
r2 = 1 - 2 * r
|
||||
! $SPF TRANSFORM(UNROLL)
|
||||
do i = 1,n
|
||||
x = i * h
|
||||
s = x * (1 - x)
|
||||
do j = 1,n
|
||||
y = j * h
|
||||
q = y * (1 - y)
|
||||
u(i,j) = 16 * s * q
|
||||
10 f(i,j) = (s + q) * 32
|
||||
enddo
|
||||
enddo
|
||||
!$SPF TRANSFORM(FISSION(j))
|
||||
do j = 1,n
|
||||
gran1(j) = u(m,j)
|
||||
gran2(j) = u(m + 1,j)
|
||||
enddo
|
||||
!$SPF TRANSFORM(FISSION(i))
|
||||
do i = 0,m
|
||||
u1(i,0) = 0
|
||||
u1(i,n + 1) = 0
|
||||
enddo
|
||||
!$SPF TRANSFORM(FISSION(i))
|
||||
do i = 1,m
|
||||
u2(i,0) = 0
|
||||
u2(i,n + 1) = 0
|
||||
enddo
|
||||
!$SPF TRANSFORM(FISSION(j))
|
||||
do j = 1,n
|
||||
u1(0,j) = 0
|
||||
u1(m + 1,j) = gran2(j)
|
||||
u2(0,j) = gran1(j)
|
||||
u2(m,j) = 0
|
||||
enddo
|
||||
!$SPF TRANSFORM(FISSION(i,j))
|
||||
do i = 1,m
|
||||
do j = 1,n
|
||||
u1(i,j) = u(i,j)
|
||||
60 f1(i,j) = f(i,j)
|
||||
enddo
|
||||
enddo
|
||||
do i = 1,m - 1
|
||||
do j = 1,n
|
||||
u2(i,j) = u(i + m,j)
|
||||
70 f2(i,j) = f(i + m,j)
|
||||
enddo
|
||||
enddo
|
||||
do ktau = 1,ntime
|
||||
do i = 1,m - 1
|
||||
do j = 1,n
|
||||
w = u1(i - 1,j) + u1(i + 1,j) + u1(i,j - 1) + u1(i,j + 1)
|
||||
80 a(i,j) = r * w + r1 * u1(i,j) + tau * f1(i,j)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,n
|
||||
w = u1(m - 1,j) + gran2(j) + u1(m,j - 1) + u1(m,j + 1)
|
||||
a(m,j) = r * w + r1 * u1(m,j) + tau * f1(m,j)
|
||||
enddo
|
||||
do i = 1,m
|
||||
do j = 1,n
|
||||
100 u1(i,j) = a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,n
|
||||
g(j) = r * gran1(j) + r2 * u2(1,j) + r * u2(2,j) +
|
||||
& tau * f2(1,j)
|
||||
enddo
|
||||
call progon(n,r,rr,r,g)
|
||||
do j = 1,n
|
||||
u2(1,j) = g(j)
|
||||
enddo
|
||||
do i = 2,m - 1
|
||||
do j = 1,n
|
||||
g(j) = r * u2(i - 1,j) + r2 * u2(i,j) + r *
|
||||
& u2(i + 1,j) + tau * f2(i,j)
|
||||
enddo
|
||||
call progon(n,r,rr,r,g)
|
||||
do j = 1,n
|
||||
140 u2(i,j) = g(j)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,n
|
||||
gran1(j) = u1(m,j)
|
||||
gran2(j) = u2(1,j)
|
||||
enddo
|
||||
do i = 1,m
|
||||
do j = 1,n
|
||||
160 u(i,j) = u1(i,j)
|
||||
enddo
|
||||
enddo
|
||||
do i = 1,m - 1
|
||||
do j = 1,n
|
||||
170 u(i + m,j) = u2(i,j)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
print 190, net,ntime
|
||||
190 FORMAT(I5,I5)
|
||||
print *, u
|
||||
200 FORMAT(F5.2)
|
||||
end
|
||||
|
||||
subroutine progon (n, a, b, c, f)
|
||||
dimension f(n)
|
||||
! $SPF ANALYSIS (PRIVATE(alfa,beta))
|
||||
|
||||
real, allocatable:: alfa(:),beta(:)
|
||||
|
||||
allocate(alfa(9),beta(9))
|
||||
alfa(1) = 0.
|
||||
beta(1) = 0.
|
||||
do i = 1,n - 1
|
||||
w = 1. / (b - a * alfa(i))
|
||||
alfa(i + 1) = c * w
|
||||
beta(i + 1) = w * (a * beta(i) + f(i))
|
||||
enddo
|
||||
f(n) = (a * beta(n) + f(n)) / (b - a * alfa(n))
|
||||
do i = n - 1,1,(-(1))
|
||||
f(i) = alfa(i + 1) * f(i + 1) + beta(i + 1)
|
||||
enddo
|
||||
deallocate(alfa)
|
||||
deallocate(beta)
|
||||
return
|
||||
end
|
||||
|
||||
23
Downloads/236/visualiser_data/properties
Normal file
23
Downloads/236/visualiser_data/properties
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": true,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": true,
|
||||
"KEEP_SPF_DIRECTIVES": true,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 100,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": true,
|
||||
"KEEP_GCOV": true,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": true,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 1,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
262
Downloads/592/distrindirect3.f90
Normal file
262
Downloads/592/distrindirect3.f90
Normal file
@@ -0,0 +1,262 @@
|
||||
program DISTRINDIRECT3
|
||||
! Testing DISTRIBUTE and REDISTRIBUTE directives
|
||||
! INDIRECT distribution
|
||||
print *,'=== START OF distrindirect3 ========================'
|
||||
call distrindirect31
|
||||
print *,'=== END OF distrindirect3 ========================= '
|
||||
end
|
||||
|
||||
subroutine distrindirect31
|
||||
parameter (L=10, ER=100000)
|
||||
integer:: A(L,L,L), B(L,L,L),AS(L,L,L), BS(L,L,L)
|
||||
integer,dimension(:,:,:),allocatable:: ib1, ib2, ib3, ib4, ib5, ib6
|
||||
integer,dimension(L,L,L):: indir_x, indir_y, indir_z
|
||||
integer MAP1(L), MAP2(L), MAP3(L)
|
||||
integer:: erri=ER
|
||||
character*15:: tname="distrindirect31"
|
||||
!DVM$ TEMPLATE E(L,L,L)
|
||||
!DVM$ DISTRIBUTE :: E
|
||||
!DVM$ ALIGN :: A,B
|
||||
!DVM$ ALIGN :: indir_x, indir_y,indir_z
|
||||
!DVM$ ALIGN :: ib1,ib2,ib3,ib4,ib5,ib6
|
||||
|
||||
call distrindirect31_s (AS, BS)
|
||||
call fillMap(MAP1,L,1)
|
||||
call fillMap(MAP2,L,2)
|
||||
call fillMap(MAP3,L,3)
|
||||
allocate( ib1(L,L,L), ib2(L,L,L), ib3(L,L,L), &
|
||||
& ib4(L,L,L), ib5(L,L,L), ib6(L,L,L) )
|
||||
|
||||
!DVM$ REDISTRIBUTE E(INDIRECT(MAP1),INDIRECT(MAP2),INDIRECT(MAP3))
|
||||
!DVM$ REALIGN (I,J,K) WITH E(I,J,K) :: A,B
|
||||
!DVM$ REALIGN (I,J,K) WITH E(I,J,K) :: indir_x, indir_y,indir_z
|
||||
!DVM$ REALIGN (I,J,K) WITH E(I,J,K) :: ib1,ib2,ib3,ib4,ib5,ib6
|
||||
do i = 1,L
|
||||
do j = 1,L
|
||||
do k = 1,L
|
||||
|
||||
indir_x(i,j,k) = i
|
||||
indir_y(i,j,k) = j
|
||||
indir_z(i,j,k) = k
|
||||
|
||||
if (i.gt.1) then
|
||||
ib1(i,j,k) = i - 1
|
||||
else
|
||||
ib1(i,j,k) = 0
|
||||
endif
|
||||
if (i.lt.L) then
|
||||
ib2(i,j,k) = i + 1
|
||||
else
|
||||
ib2(i,j,k) = 0
|
||||
endif
|
||||
if (j.gt.1) then
|
||||
ib3(i,j,k) = j - 1
|
||||
else
|
||||
ib3(i,j,k) = 0
|
||||
endif
|
||||
if (j.lt.L) then
|
||||
ib4(i,j,k) = j + 1
|
||||
else
|
||||
ib4(i,j,k) = 0
|
||||
endif
|
||||
if (k.gt.1) then
|
||||
ib5(i,j,k) = k - 1
|
||||
else
|
||||
ib5(i,j,k) = 0
|
||||
endif
|
||||
if (k.lt.L) then
|
||||
ib6(i,j,k) = k + 1
|
||||
else
|
||||
ib6(i,j,k) = 0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
!DVM$ SHADOW_ADD (E((ib1(i,j,k)) with E(@i,@j,@k),*,*) = "nei1") include_to A
|
||||
!DVM$ SHADOW_ADD (E((ib2(i,j,k)) with E(@i,@j,@k),*,*) = "nei2") include_to A
|
||||
!DVM$ SHADOW_ADD (E(*,(ib3(i,j,k)) with E(@i,@j,@k),*) = "nei3") include_to A
|
||||
!DVM$ SHADOW_ADD (E(*,(ib4(i,j,k)) with E(@i,@j,@k),*) = "nei4") include_to A
|
||||
!DVM$ SHADOW_ADD (E(*,*,(ib5(i,j,k)) with E(@i,@j,@k)) = "nei5") include_to A
|
||||
!DVM$ SHADOW_ADD (E(*,*,(ib6(i,j,k)) with E(@i,@j,@k)) = "nei6") include_to A
|
||||
|
||||
!DVM$ LOCALIZE(ib1 => A(:,*,*))
|
||||
!DVM$ LOCALIZE(ib2 => A(:,*,*))
|
||||
!DVM$ LOCALIZE(ib3 => A(*,:,*))
|
||||
!DVM$ LOCALIZE(ib4 => A(*,:,*))
|
||||
!DVM$ LOCALIZE(ib5 => A(*,*,:))
|
||||
!DVM$ LOCALIZE(ib6 => A(*,*,:))
|
||||
|
||||
!DVM$ REGION
|
||||
|
||||
!DVM$ PARALLEL (k,j,i) ON B(i,j,k)
|
||||
do k = 1,L
|
||||
do j = 1,L
|
||||
do i = 1,L
|
||||
|
||||
A(i,j,k) = 0
|
||||
|
||||
if (indir_x(i,j,k) == 1 .or. indir_x(i,j,k) == L .or. &
|
||||
& indir_y(i,j,k) == 1 .or. indir_y(i,j,k) == L .or. &
|
||||
& indir_z(i,j,k) == 1 .or. indir_z(i,j,k) == L) then
|
||||
B(i,j,k) = 0
|
||||
else
|
||||
B(i,j,k) = 1 + indir_x(i,j,k) + indir_y(i,j,k) + indir_z(i,j,k)
|
||||
endif
|
||||
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
!DVM$ PARALLEL (k,j,i) ON B(i,j,k), SHADOW_RENEW (A)
|
||||
do k = 2,L-1
|
||||
do j = 2,L-1
|
||||
do i = 2,L-1
|
||||
if (indir_x(i,j,k) /= 1 .and. indir_x(i,j,k) /= L .and. &
|
||||
& indir_y(i,j,k) /= 1 .and. indir_y(i,j,k) /= L .and. &
|
||||
& indir_z(i,j,k) /= 1 .and. indir_z(i,j,k) /= L) then
|
||||
|
||||
B(i,j,k) = (A(ib1(i,j,k),j,k) + A(ib2(i,j,k),j,k) + &
|
||||
& A(i,ib3(i,j,k),k) + A(i,ib4(i,j,k),k) + A(i,j,ib5(i,j,k)) + &
|
||||
& A(i,j,ib6(i,j,k))) / 6.0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (k,j,i) ON B(i,j,k), REDUCTION(min(erri))
|
||||
do k = 2,L-1
|
||||
do j = 2,L-1
|
||||
do i = 2,L-1
|
||||
if (indir_x(i,j,k) /= 1 .and. indir_x(i,j,k) /= L .and. &
|
||||
& indir_y(i,j,k) /= 1 .and. indir_y(i,j,k) /= L .and. &
|
||||
& indir_z(i,j,k) /= 1 .and. indir_z(i,j,k) /= L) then
|
||||
|
||||
if(B(i,j,k) .ne. BS(i,j,k)) erri = min(erri, ABS(B(i,j,k)-BS(i,j,k)))
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
!DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL(erri)
|
||||
if (erri .eq. ER) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
|
||||
deallocate (ib1,ib2,ib3,ib4,ib5,ib6)
|
||||
end subroutine
|
||||
|
||||
!---------------------------------------------------------------
|
||||
subroutine fillMap(MAP,L,dim)
|
||||
integer numproc
|
||||
integer i,L,dim
|
||||
real x
|
||||
integer MAP(L)
|
||||
PROCESSORS_SIZE(i) = 1
|
||||
numproc = PROCESSORS_SIZE(dim) ! dvmh_get_num_procs(1)
|
||||
do i=1,L
|
||||
call RANDOM_NUMBER(x)
|
||||
MAP(i) = MOD(INT(x*10), numproc) !rand()
|
||||
enddo
|
||||
end subroutine
|
||||
!---------------------------------------------------------------
|
||||
subroutine distrindirect31_s (A,B)
|
||||
parameter (L=10)
|
||||
integer:: A(L,L,L), B(L,L,L)
|
||||
integer,dimension(:,:,:),allocatable:: ib1, ib2, ib3, ib4, ib5, ib6
|
||||
integer,dimension(L,L,L):: indir_x, indir_y, indir_z
|
||||
allocate( ib1(L,L,L), ib2(L,L,L), ib3(L,L,L), &
|
||||
& ib4(L,L,L), ib5(L,L,L), ib6(L,L,L) )
|
||||
|
||||
do i = 1,L
|
||||
do j = 1,L
|
||||
do k = 1,L
|
||||
|
||||
indir_x(i,j,k) = i
|
||||
indir_y(i,j,k) = j
|
||||
indir_z(i,j,k) = k
|
||||
|
||||
if (i.gt.1) then
|
||||
ib1(i,j,k) = i - 1
|
||||
else
|
||||
ib1(i,j,k) = 0
|
||||
endif
|
||||
if (i.lt.L) then
|
||||
ib2(i,j,k) = i + 1
|
||||
else
|
||||
ib2(i,j,k) = 0
|
||||
endif
|
||||
if (j.gt.1) then
|
||||
ib3(i,j,k) = j - 1
|
||||
else
|
||||
ib3(i,j,k) = 0
|
||||
endif
|
||||
if (j.lt.L) then
|
||||
ib4(i,j,k) = j + 1
|
||||
else
|
||||
ib4(i,j,k) = 0
|
||||
endif
|
||||
if (k.gt.1) then
|
||||
ib5(i,j,k) = k - 1
|
||||
else
|
||||
ib5(i,j,k) = 0
|
||||
endif
|
||||
if (k.lt.L) then
|
||||
ib6(i,j,k) = k + 1
|
||||
else
|
||||
ib6(i,j,k) = 0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
do k = 1,L
|
||||
do j = 1,L
|
||||
do i = 1,L
|
||||
|
||||
A(i,j,k) = 0
|
||||
|
||||
if (indir_x(i,j,k) == 1 .or. indir_x(i,j,k) == L .or. &
|
||||
& indir_y(i,j,k) == 1 .or. indir_y(i,j,k) == L .or. &
|
||||
& indir_z(i,j,k) == 1 .or. indir_z(i,j,k) == L) then
|
||||
B(i,j,k) = 0
|
||||
else
|
||||
B(i,j,k) = 1 + indir_x(i,j,k) + indir_y(i,j,k) + indir_z(i,j,k)
|
||||
endif
|
||||
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
do k = 2,L-1
|
||||
do j = 2,L-1
|
||||
do i = 2,L-1
|
||||
if (indir_x(i,j,k) /= 1 .and. indir_x(i,j,k) /= L .and. &
|
||||
& indir_y(i,j,k) /= 1 .and. indir_y(i,j,k) /= L .and. &
|
||||
& indir_z(i,j,k) /= 1 .and. indir_z(i,j,k) /= L) then
|
||||
|
||||
B(i,j,k) = (A(ib1(i,j,k),j,k) + A(ib2(i,j,k),j,k) + &
|
||||
& A(i,ib3(i,j,k),k) + A(i,ib4(i,j,k),k) + A(i,j,ib5(i,j,k)) + &
|
||||
& A(i,j,ib6(i,j,k))) / 6.0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
deallocate (ib1,ib2,ib3,ib4,ib5,ib6)
|
||||
end subroutine
|
||||
|
||||
|
||||
|
||||
!---------------------------------------------------------------
|
||||
subroutine ansyes(name)
|
||||
character*14 name
|
||||
print *,name,' - complete'
|
||||
end
|
||||
subroutine ansno(name)
|
||||
character*9 name
|
||||
print *,name,' - ***error'
|
||||
end
|
||||
|
||||
23
Downloads/592/visualiser_data/properties
Normal file
23
Downloads/592/visualiser_data/properties
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": true,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": true,
|
||||
"KEEP_SPF_DIRECTIVES": true,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 100,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": true,
|
||||
"KEEP_GCOV": true,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": true,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 1,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
919
Downloads/bugreport_1733152707/acrred21/acrred21.for
Normal file
919
Downloads/bugreport_1733152707/acrred21/acrred21.for
Normal file
@@ -0,0 +1,919 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2371 and build date: Nov 19 2024 14:25:24
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 10 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
isumc=0
|
||||
isuma=0
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc=isumc+c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma=isuma+a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(isuma.eq.isumc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2102'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
iproda=1
|
||||
iprodc=1
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc=iprodc*c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda=iproda*a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(iproda.eq.iprodc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc=MAX(c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imaxa=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa=MAX(a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer iminc,imina
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
iminc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc=MIN(c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imina=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina=MIN(a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*10 :: tname
|
||||
integer :: coorc(2), coora(2), imaxc,imaxa,nnl
|
||||
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
nnl=nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
|
||||
imaxc=c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!$SPF ANALYSIS(REDUCTION(MAXLOC(imaxa,coora,2)))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa=a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *,imaxc,imaxa, coorc(1), coorc(2), coora(1), coora(2)
|
||||
if (imaxc .eq. imaxa.and.coora(1) .eq. coorc(1).and.
|
||||
* coorc(2) .eq. coora(2) ) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 12,n - 11
|
||||
do j = 12,m - 11
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,m - 11
|
||||
do i = 12,n - 11
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
919
Downloads/bugreport_1733152707/acrred21/m1/acrred21.for
Normal file
919
Downloads/bugreport_1733152707/acrred21/m1/acrred21.for
Normal file
@@ -0,0 +1,919 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2371 and build date: Nov 19 2024 14:25:24
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 10 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
isumc=0
|
||||
isuma=0
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc=isumc+c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma=isuma+a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(isuma.eq.isumc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2102'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
iproda=1
|
||||
iprodc=1
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc=iprodc*c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda=iproda*a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(iproda.eq.iprodc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc=MAX(c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imaxa=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa=MAX(a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer iminc,imina
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
iminc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc=MIN(c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imina=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina=MIN(a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: coorc(2), coora(2), imaxc,imaxa,nnl
|
||||
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
nnl=nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
|
||||
imaxc=c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!$SPF ANALYSIS(REDUCTION(MAXLOC(imaxa,coora,2)))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa=a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *,imaxc,imaxa, coorc(1), coorc(2), coora(1), coora(2)
|
||||
if (imaxc .eq. imaxa.and.coora(1) .eq. coorc(1).and.
|
||||
* coorc(2) .eq. coora(2) ) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 12,n - 11
|
||||
do j = 12,m - 11
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,m - 11
|
||||
do i = 12,n - 11
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
919
Downloads/bugreport_1733152707/acrred21/m2/acrred21.for
Normal file
919
Downloads/bugreport_1733152707/acrred21/m2/acrred21.for
Normal file
@@ -0,0 +1,919 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2371 and build date: Nov 19 2024 14:25:24
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 10 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
isumc=0
|
||||
isuma=0
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc=isumc+c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma=isuma+a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(isuma.eq.isumc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2102'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
iproda=1
|
||||
iprodc=1
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc=iprodc*c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda=iproda*a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(iproda.eq.iprodc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc=MAX(c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imaxa=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa=MAX(a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer iminc,imina
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
iminc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc=MIN(c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imina=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina=MIN(a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: coorc(2), coora(2), imaxc,imaxa,nnl
|
||||
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
nnl=nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
|
||||
imaxc=c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!$SPF ANALYSIS(REDUCTION(MAXLOC(imaxa,coora,2)))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa=a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *,imaxc,imaxa, coorc(1), coorc(2), coora(1), coora(2)
|
||||
if (imaxc .eq. imaxa.and.coora(1) .eq. coorc(1).and.
|
||||
* coorc(2) .eq. coora(2) ) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 12,n - 11
|
||||
do j = 12,m - 11
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,m - 11
|
||||
do i = 12,n - 11
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
919
Downloads/bugreport_1733152707/acrred21/m3/acrred21.for
Normal file
919
Downloads/bugreport_1733152707/acrred21/m3/acrred21.for
Normal file
@@ -0,0 +1,919 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2371 and build date: Nov 19 2024 14:25:24
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 10 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*15 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
isumc=0
|
||||
isuma=0
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc=isumc+c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma=isuma+a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(isuma.eq.isumc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*15 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2102'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
iproda=1
|
||||
iprodc=1
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc=iprodc*c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda=iproda*a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(iproda.eq.iprodc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*15 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc=MAX(c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imaxa=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa=MAX(a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*15 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer iminc,imina
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
iminc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc=MIN(c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imina=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina=MIN(a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*15 :: tname
|
||||
integer :: coorc(2), coora(2), imaxc,imaxa,nnl
|
||||
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
nnl=nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
|
||||
imaxc=c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!$SPF ANALYSIS(REDUCTION(MAXLOC(imaxa,coora,2)))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa=a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *,imaxc,imaxa, coorc(1), coorc(2), coora(1), coora(2)
|
||||
if (imaxc .eq. imaxa.and.coora(1) .eq. coorc(1).and.
|
||||
* coorc(2) .eq. coora(2) ) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 12,n - 11
|
||||
do j = 12,m - 11
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,m - 11
|
||||
do i = 12,n - 11
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
919
Downloads/bugreport_1733152707/acrred21/m4/acrred21.for
Normal file
919
Downloads/bugreport_1733152707/acrred21/m4/acrred21.for
Normal file
@@ -0,0 +1,919 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2371 and build date: Nov 19 2024 14:25:24
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 10 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
isumc=0
|
||||
isuma=0
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc=isumc+c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma=isuma+a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(isuma.eq.isumc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2102'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
iproda=1
|
||||
iprodc=1
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc=iprodc*c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda=iproda*a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(iproda.eq.iprodc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc=MAX(c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imaxa=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa=MAX(a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer iminc,imina
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
iminc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc=MIN(c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imina=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina=MIN(a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*10 :: tname
|
||||
integer :: coorc(2), coora(2), imaxc,imaxa,nnl
|
||||
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
nnl=nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
|
||||
imaxc=c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!$SPF ANALYSIS(REDUCTION(MAXLOC(imaxa,coora,2)))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa=a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *,imaxc,imaxa, coorc(1), coorc(2), coora(1), coora(2)
|
||||
if (imaxc .eq. imaxa.and.coora(1) .eq. coorc(1).and.
|
||||
* coorc(2) .eq. coora(2) ) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 12,n - 11
|
||||
do j = 12,m - 11
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,m - 11
|
||||
do i = 12,n - 11
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
919
Downloads/bugreport_1733152707/acrred21/m5/acrred21.for
Normal file
919
Downloads/bugreport_1733152707/acrred21/m5/acrred21.for
Normal file
@@ -0,0 +1,919 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2371 and build date: Nov 19 2024 14:25:24
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 10 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
isumc=0
|
||||
isuma=0
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc=isumc+c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma=isuma+a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(isuma.eq.isumc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2102'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
iproda=1
|
||||
iprodc=1
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc=iprodc*c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda=iproda*a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if ((nloopi .eq. nl).and.(iproda.eq.iprodc)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc=MAX(c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imaxa=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa=MAX(a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer iminc,imina
|
||||
intrinsic min
|
||||
|
||||
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
iminc=c(1,1)
|
||||
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc=MIN(c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
imina=a(1,1)
|
||||
|
||||
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina=MIN(a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*10 :: tname
|
||||
integer :: coorc(2), coora(2), imaxc,imaxa,nnl
|
||||
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
nnl=nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
|
||||
imaxc=c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!$SPF ANALYSIS(REDUCTION(MAXLOC(imaxa,coora,2)))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa=a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *,imaxc,imaxa, coorc(1), coorc(2), coora(1), coora(2)
|
||||
if (imaxc .eq. imaxa.and.coora(1) .eq. coorc(1).and.
|
||||
* coorc(2) .eq. coora(2) ) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 12,n - 11
|
||||
do j = 12,m - 11
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,m - 11
|
||||
do i = 12,n - 11
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
993
Downloads/bugreport_1733152707/acrred21/p1/acrred21.for
Normal file
993
Downloads/bugreport_1733152707/acrred21/p1/acrred21.for
Normal file
@@ -0,0 +1,993 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2373 and build date: Nov 22 2024 12:15:43
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp1(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp1
|
||||
!DVM$ DYNAMIC dvmh_temp1
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp2(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp2
|
||||
!DVM$ DYNAMIC dvmh_temp2
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp3(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp3
|
||||
!DVM$ DYNAMIC dvmh_temp3
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp4(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp4
|
||||
!DVM$ DYNAMIC dvmh_temp4
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp4(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp4(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp4
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 1:1,1:1 )
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp4(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
isumc = 0
|
||||
isuma = 0
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc = isumc + c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ ACTUAL (c)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j),ACROSS (a(1:1,1:1)),REDUCT
|
||||
!DVM$&ION (min (nloopi),min (nloopj),sum (isuma))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma = isuma + a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (nloopi .eq. nl .and. isuma .eq. isumc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 0:1,0:0 )
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
tname = 'acrred2102'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp0(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
iproda = 1
|
||||
iprodc = 1
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc = iprodc * c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ ACTUAL (c)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j),ACROSS (a(0:1,0:0)),REDUCT
|
||||
!DVM$&ION (min (nloopi),min (nloopj),product (iproda))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda = iproda * a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (nloopi .eq. nl .and. iproda .eq. iprodc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp1(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp1(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp1
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 1:0,0:1 )
|
||||
integer :: imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp1(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc = max (c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL (a)
|
||||
!DVM$ REMOTE_ACCESS (a(1,1))
|
||||
imaxa = a(1,1)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j),ACROSS (a(1:0,0:1)),REDUCT
|
||||
!DVM$&ION (max (imaxa))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa = max (a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp2(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp2(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp2
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 1:0,0:1 )
|
||||
integer :: iminc,imina
|
||||
intrinsic min
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp2(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
iminc = c(1,1)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc = min (c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL (a)
|
||||
!DVM$ REMOTE_ACCESS (a(1,1))
|
||||
imina = a(1,1)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j),ACROSS (a(1:0,0:1)),REDUCT
|
||||
!DVM$&ION (min (imina))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina = min (a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp3(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp3(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp3
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 0:1,1:0 )
|
||||
character*7 :: tname
|
||||
integer :: coorc(2),coora(2),imaxc,imaxa,nnl
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp3(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
imaxc = c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL (a)
|
||||
!DVM$ REMOTE_ACCESS (a(1,1))
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (i,j) ON a(i,j), PRIVATE (i,j),ACROSS (a(0:1,1:0)),REDUCT
|
||||
!DVM$&ION (maxloc (imaxa,coora,2))
|
||||
!$SPF ANALYSIS (REDUCTION (maxloc(imaxa,coora,2)))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa = a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *, imaxc,imaxa,coorc(1),coorc(2),coora(1),coora(2)
|
||||
if (imaxc .eq. imaxa .and. coora(1) .eq. coorc(1) .and. coorc(2) .
|
||||
&eq. coora(2)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 12,n - 11
|
||||
do j = 12,m - 11
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,m - 11
|
||||
do i = 12,n - 11
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_ACROSS_REDUCTION/acrred21/p1/visualiser_data/options/acrred21.for.dep
|
||||
993
Downloads/bugreport_1733152707/acrred21/p2/acrred21.for
Normal file
993
Downloads/bugreport_1733152707/acrred21/p2/acrred21.for
Normal file
@@ -0,0 +1,993 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2373 and build date: Nov 22 2024 12:15:43
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp1(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp1
|
||||
!DVM$ DYNAMIC dvmh_temp1
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp2(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp2
|
||||
!DVM$ DYNAMIC dvmh_temp2
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp3(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp3
|
||||
!DVM$ DYNAMIC dvmh_temp3
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp4(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: dvmh_temp4
|
||||
!DVM$ DYNAMIC dvmh_temp4
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*15 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp4(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp4(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp4
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 1:1,1:1 )
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp4(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
isumc = 0
|
||||
isuma = 0
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc = isumc + c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ ACTUAL (c)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j),ACROSS (a(1:1,1:1)),REDUCT
|
||||
!DVM$&ION (min (nloopi),min (nloopj),sum (isuma))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma = isuma + a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (nloopi .eq. nl .and. isuma .eq. isumc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*15 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 0:1,0:0 )
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
tname = 'acrred2102'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp0(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
iproda = 1
|
||||
iprodc = 1
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc = iprodc * c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ ACTUAL (c)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j),ACROSS (a(0:1,0:0)),REDUCT
|
||||
!DVM$&ION (min (nloopi),min (nloopj),product (iproda))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda = iproda * a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (nloopi .eq. nl .and. iproda .eq. iprodc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*15 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp1(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp1(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp1
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 1:0,0:1 )
|
||||
integer :: imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp1(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc = max (c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL (a)
|
||||
!DVM$ REMOTE_ACCESS (a(1,1))
|
||||
imaxa = a(1,1)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j),ACROSS (a(1:0,0:1)),REDUCT
|
||||
!DVM$&ION (max (imaxa))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa = max (a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*15 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp2(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp2(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp2
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 1:0,0:1 )
|
||||
integer :: iminc,imina
|
||||
intrinsic min
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp2(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
iminc = c(1,1)
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc = min (c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL (a)
|
||||
!DVM$ REMOTE_ACCESS (a(1,1))
|
||||
imina = a(1,1)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j),ACROSS (a(1:0,0:1)),REDUCT
|
||||
!DVM$&ION (min (imina))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina = min (a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp3(1:16,1:16)
|
||||
!DVM$ DISTRIBUTE dvmh_temp3(BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp3
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ DYNAMIC a
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
!DVM$ SHADOW a( 0:1,1:0 )
|
||||
character*15 :: tname
|
||||
integer :: coorc(2),coora(2),imaxc,imaxa,nnl
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(n,m),c(n,m))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2) WITH dvmh_temp3(iEX1,iEX2)
|
||||
continue
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
imaxc = c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i) ON a(i,j), PRIVATE (i,j)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL (a)
|
||||
!DVM$ REMOTE_ACCESS (a(1,1))
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (i,j) ON a(i,j), PRIVATE (i,j),ACROSS (a(0:1,1:0)),REDUCT
|
||||
!DVM$&ION (maxloc (imaxa,coora,2))
|
||||
!$SPF ANALYSIS (REDUCTION (maxloc(imaxa,coora,2)))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa = a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *, imaxc,imaxa,coorc(1),coorc(2),coora(1),coora(2)
|
||||
if (imaxc .eq. imaxa .and. coora(1) .eq. coorc(1) .and. coorc(2) .
|
||||
&eq. coora(2)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 12,n - 11
|
||||
do j = 12,m - 11
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,m - 11
|
||||
do i = 12,n - 11
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*15 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*15 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_ACROSS_REDUCTION/acrred21/p2/visualiser_data/options/acrred21.for.dep
|
||||
940
Downloads/bugreport_1733152707/acrred21/v1/acrred21.for
Normal file
940
Downloads/bugreport_1733152707/acrred21/v1/acrred21.for
Normal file
@@ -0,0 +1,940 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2373 and build date: Nov 22 2024 12:15:43
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** MPI program regime (shared memory parallelization)
|
||||
! *** ignore I/O checker for arrays (DVM I/O limitations)
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
isumc = 0
|
||||
isuma = 0
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (i,j), PRIVATE (i,j),TIE (c(i,j)),ACROSS (c(1:1,1:1)),RED
|
||||
!DVM$&UCTION (sum (isumc))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc = isumc + c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (j,i), PRIVATE (i,j),TIE (a(i,j))
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (j,i), PRIVATE (i,j),TIE (a(i,j),c(i,j)),ACROSS (a(1:1,1:
|
||||
!DVM$&1)),REDUCTION (min (nloopi),min (nloopj),sum (isuma))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma = isuma + a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (nloopi .eq. nl .and. isuma .eq. isumc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
tname = 'acrred2102'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
iproda = 1
|
||||
iprodc = 1
|
||||
call serial2(c,n,m,nnl)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (i,j), PRIVATE (i,j),TIE (c(i,j)),ACROSS (c(0:1,0:0)),RED
|
||||
!DVM$&UCTION (product (iprodc))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc = iprodc * c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i), PRIVATE (i,j),TIE (a(i,j))
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (j,i), PRIVATE (i,j),TIE (a(i,j),c(i,j)),ACROSS (a(0:1,0:
|
||||
!DVM$&0)),REDUCTION (min (nloopi),min (nloopj),product (iproda))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda = iproda * a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (nloopi .eq. nl .and. iproda .eq. iprodc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
!DVM$ GET_ACTUAL (c)
|
||||
imaxc = c(1,1)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (i,j), PRIVATE (i,j),TIE (c(i,j)),ACROSS (c(1:0,0:1)),RED
|
||||
!DVM$&UCTION (max (imaxc))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc = max (c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (j,i), PRIVATE (i,j),TIE (a(i,j))
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL (a)
|
||||
imaxa = a(1,1)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i), PRIVATE (i,j),TIE (a(i,j)),ACROSS (a(1:0,0:1)),RED
|
||||
!DVM$&UCTION (max (imaxa))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa = max (a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: iminc,imina
|
||||
intrinsic min
|
||||
tname = 'acrred2103'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
!DVM$ GET_ACTUAL (c)
|
||||
iminc = c(1,1)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (i,j), PRIVATE (i,j),TIE (c(i,j)),ACROSS (c(1:0,0:1)),RED
|
||||
!DVM$&UCTION (min (iminc))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc = min (c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ PARALLEL (j,i), PRIVATE (i,j),TIE (a(i,j))
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL (a)
|
||||
imina = a(1,1)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i), PRIVATE (i,j),TIE (a(i,j)),ACROSS (a(1:0,0:1)),RED
|
||||
!DVM$&UCTION (min (imina))
|
||||
do j = 2,m - 1
|
||||
do i = 2,n - 1
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina = min (a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: coorc(2),coora(2),imaxc,imaxa,nnl
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
imaxc = c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (j,i), PRIVATE (i,j),TIE (a(i,j))
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
!DVM$ GET_ACTUAL (a)
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
!DVM$ ACTUAL (coora(1))
|
||||
coora(2) = 1
|
||||
!DVM$ ACTUAL (coora(2))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (i,j), PRIVATE (i,j),TIE (a(i,j)),ACROSS (a(0:1,1:0)),RED
|
||||
!DVM$&UCTION (maxloc (imaxa,coora,2))
|
||||
!$SPF ANALYSIS (REDUCTION (maxloc(imaxa,coora,2)))
|
||||
do i = 2,n - 1
|
||||
do j = 2,m - 1
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa = a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
!DVM$ GET_ACTUAL (coora)
|
||||
print *, imaxc,imaxa,coorc(1),coorc(2),coora(1),coora(2)
|
||||
if (imaxc .eq. imaxa .and. coora(1) .eq. coorc(1) .and. coorc(2) .
|
||||
&eq. coora(2)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 3,n - 2
|
||||
do j = 3,m - 2
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,m - 2
|
||||
do i = 3,n - 2
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 4,n - 3
|
||||
do j = 4,m - 3
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,m - 3
|
||||
do i = 4,n - 3
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(n,m),c(n,m))
|
||||
nnl = nl
|
||||
call serial2(c,n,m,nnl)
|
||||
do i = 12,n - 11
|
||||
do j = 12,m - 11
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = nl
|
||||
nloopj = nl
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,m
|
||||
do i = 1,n
|
||||
a(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,m - 11
|
||||
do i = 12,n - 11
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. nl) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_ACROSS_REDUCTION/acrred21/v1/visualiser_data/options/acrred21.for.dep
|
||||
894
Downloads/bugreport_1733152707/acrred21/v2/acrred21.for
Normal file
894
Downloads/bugreport_1733152707/acrred21/v2/acrred21.for
Normal file
@@ -0,0 +1,894 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2373 and build date: Nov 22 2024 12:15:43
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
isumc = 0
|
||||
isuma = 0
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc = isumc + c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma = isuma + a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
if (nloopi .eq. 1000 .and. isuma .eq. isumc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
tname = 'acrred2102'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
iproda = 1
|
||||
iprodc = 1
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc = iprodc * c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda = iproda * a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
if (nloopi .eq. 1000 .and. iproda .eq. iprodc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
imaxc = c(1,1)
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc = max (c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
imaxa = a(1,1)
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa = max (a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: iminc,imina
|
||||
intrinsic min
|
||||
tname = 'acrred2103'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
iminc = c(1,1)
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc = min (c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
imina = a(1,1)
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina = min (a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*10 :: tname
|
||||
integer :: coorc(2),coora(2),imaxc,imaxa,nnl
|
||||
|
||||
!$SPF ANALYSIS(PROCESS_PRIVATE(coorc_io_l0))
|
||||
integer :: coorc_io_l0(2)
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
imaxc = c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!$SPF ANALYSIS (REDUCTION (maxloc(imaxa,coora,2)))
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa = a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
coorc_io_l0 = coorc
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *, imaxc,imaxa,coorc_io_l0(1),coorc_io_l0(2),coora(1),coora(
|
||||
&2)
|
||||
if (imaxc .eq. imaxa .and. coora(1) .eq. coorc_io_l0(1) .and. coor
|
||||
&c_io_l0(2) .eq. coora(2)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 4,13
|
||||
do j = 4,13
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,13
|
||||
do i = 4,13
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 4,13
|
||||
do j = 4,13
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,13
|
||||
do i = 4,13
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 4,13
|
||||
do j = 4,13
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,13
|
||||
do i = 4,13
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(59,59),c(59,59))
|
||||
nnl = 1000
|
||||
call serial2(c,59,59,1000)
|
||||
do i = 12,48
|
||||
do j = 12,48
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,59
|
||||
do i = 1,59
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,48
|
||||
do i = 12,48
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
894
Downloads/bugreport_1733152707/acrred21/v3/acrred21.for
Normal file
894
Downloads/bugreport_1733152707/acrred21/v3/acrred21.for
Normal file
@@ -0,0 +1,894 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2373 and build date: Nov 22 2024 12:15:43
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
isumc = 0
|
||||
isuma = 0
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc = isumc + c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma = isuma + a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
if (nloopi .eq. 1000 .and. isuma .eq. isumc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
tname = 'acrred2102'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
iproda = 1
|
||||
iprodc = 1
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc = iprodc * c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda = iproda * a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
if (nloopi .eq. 1000 .and. iproda .eq. iprodc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
imaxc = c(1,1)
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc = max (c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
imaxa = a(1,1)
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa = max (a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: iminc,imina
|
||||
intrinsic min
|
||||
tname = 'acrred2103'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
iminc = c(1,1)
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc = min (c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
imina = a(1,1)
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina = min (a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*10 :: tname
|
||||
integer :: coorc(2),coora(2),imaxc,imaxa,nnl
|
||||
|
||||
!$SPF ANALYSIS(PROCESS_PRIVATE(coorc_io_l0))
|
||||
integer :: coorc_io_l0(2)
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
imaxc = c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!$SPF ANALYSIS (REDUCTION (maxloc(imaxa,coora,2)))
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa = a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
coorc_io_l0 = coorc
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *, imaxc,imaxa,coorc_io_l0(1),coorc_io_l0(2),coora(1),coora(
|
||||
&2)
|
||||
if (imaxc .eq. imaxa .and. coora(1) .eq. coorc_io_l0(1) .and. coor
|
||||
&c_io_l0(2) .eq. coora(2)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 4,13
|
||||
do j = 4,13
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,13
|
||||
do i = 4,13
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 4,13
|
||||
do j = 4,13
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,13
|
||||
do i = 4,13
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 4,13
|
||||
do j = 4,13
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,13
|
||||
do i = 4,13
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(59,59),c(59,59))
|
||||
nnl = 1000
|
||||
call serial2(c,59,59,1000)
|
||||
do i = 12,48
|
||||
do j = 12,48
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,59
|
||||
do i = 1,59
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,48
|
||||
do i = 12,48
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
894
Downloads/bugreport_1733152707/acrred21/v3/m1/acrred21.for
Normal file
894
Downloads/bugreport_1733152707/acrred21/v3/m1/acrred21.for
Normal file
@@ -0,0 +1,894 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2373 and build date: Nov 22 2024 12:15:43
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
program acrred21
|
||||
|
||||
! TESTING OF THE acrredOSS CLAUSE.
|
||||
! DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT
|
||||
! FLOW-DEP-LENGTH ON BOTH SIDES
|
||||
print *, '===START OF acrred21========================'
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2101()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2102()
|
||||
|
||||
! --------------------------------------------------
|
||||
call acrred2103()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2104()
|
||||
|
||||
! -------------------------------------------------
|
||||
call acrred2105()
|
||||
|
||||
! -------------------------------------------------
|
||||
! call acrred2106()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2107()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2108()
|
||||
!
|
||||
! --------------------------------------------------
|
||||
! call acrred2109()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2110()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2111()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2112()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2113()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2114()
|
||||
!
|
||||
! -------------------------------------------------
|
||||
! call acrred2115()
|
||||
! -------------------------------------------------
|
||||
print *, '=== END OF acrred21 ========================= '
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2101
|
||||
subroutine acrred2101 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,isumc,isuma
|
||||
intrinsic min
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2101'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
isumc = 0
|
||||
isuma = 0
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 1) + c(i - 1,j) + c(i,j - 1)
|
||||
isumc = isumc + c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 1) + a(i - 1,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
isuma = isuma + a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
if (nloopi .eq. 1000 .and. isuma .eq. isumc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ---------------------------------------------acrred2102
|
||||
subroutine acrred2102 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj,iproda,iprodc
|
||||
intrinsic min
|
||||
tname = 'acrred2102'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
iproda = 1
|
||||
iprodc = 1
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i + 1,j)
|
||||
iprodc = iprodc * c(i,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
iproda = iproda * a(i,j)
|
||||
enddo
|
||||
enddo
|
||||
if (nloopi .eq. 1000 .and. iproda .eq. iprodc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------acrred2103
|
||||
subroutine acrred2103 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: imaxc,imaxa
|
||||
intrinsic max
|
||||
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2103'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
imaxc = c(1,1)
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
imaxc = max (c(i,j),imaxc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
imaxa = a(1,1)
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imaxa = max (a(i,j),imaxa)
|
||||
enddo
|
||||
enddo
|
||||
if (imaxa .eq. imaxc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2104
|
||||
subroutine acrred2104 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*10 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: iminc,imina
|
||||
intrinsic min
|
||||
tname = 'acrred2103'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
iminc = c(1,1)
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i - 1,j) + c(i,j + 1)
|
||||
iminc = min (c(i,j),iminc)
|
||||
enddo
|
||||
enddo
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
imina = a(1,1)
|
||||
do j = 2,15
|
||||
do i = 2,15
|
||||
a(i,j) = a(i - 1,j) + a(i,j + 1)
|
||||
imina = min (a(i,j),imina)
|
||||
enddo
|
||||
enddo
|
||||
if (imina .eq. iminc) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! ------------------------------------------acrred2105
|
||||
subroutine acrred2105 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*10 :: tname
|
||||
integer :: coorc(2),coora(2),imaxc,imaxa,nnl
|
||||
|
||||
!$SPF ANALYSIS(PROCESS_PRIVATE(coorc_io_l0))
|
||||
integer :: coorc_io_l0(2)
|
||||
|
||||
! DVM$ SHADOW A( 0:1,1:1 )
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2105'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
imaxc = c(1,1)
|
||||
lcoor = 2
|
||||
coorc(1) = 1
|
||||
coorc(2) = 1
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
c(i,j) = c(i,j - 1) + c(i + 1,j)
|
||||
if (c(i,j) .gt. imaxc) then
|
||||
imaxc = c(i,j)
|
||||
coorc(1) = i
|
||||
coorc(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,1:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
imaxa = a(1,1)
|
||||
lcoor = 2
|
||||
coora(1) = 1
|
||||
coora(2) = 1
|
||||
!$SPF ANALYSIS (REDUCTION (maxloc(imaxa,coora,2)))
|
||||
do i = 2,15
|
||||
do j = 2,15
|
||||
a(i,j) = a(i,j - 1) + a(i + 1,j)
|
||||
if (a(i,j) .gt. imaxa) then
|
||||
imaxa = a(i,j)
|
||||
coora(1) = i
|
||||
coora(2) = j
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
coorc_io_l0 = coorc
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
print *, imaxc,imaxa,coorc_io_l0(1),coorc_io_l0(2),coora(1),coora(
|
||||
&2)
|
||||
if (imaxc .eq. imaxa .and. coora(1) .eq. coorc_io_l0(1) .and. coor
|
||||
&c_io_l0(2) .eq. coora(2)) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2106
|
||||
subroutine acrred2106 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2106'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i + 2,j) + c(i - 2,j) +
|
||||
& c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i + 2,j) + a(i - 2,j) +
|
||||
& a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2107
|
||||
subroutine acrred2107 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2107'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i + 2,j) + c(i,j + 2) + c(i,j - 2)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:2,2:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i + 2,j) + a(i,j + 2) + a(i,j - 2)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2108
|
||||
subroutine acrred2108 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,2:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2108'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i - 1,j) + c(i,j - 1) + c(i - 2,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,2:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i - 1,j) + a(i,j - 1) + a(i - 2,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2109
|
||||
subroutine acrred2109 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (2:2,0:2):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2109'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i,j + 2) + c(i + 1,j) + c(i + 2,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(2:2,0:2))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i,j + 2) + a(i + 1,j) + a(i + 2,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2110
|
||||
subroutine acrred2110 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2110'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 4,13
|
||||
do j = 4,13
|
||||
c(i,j) = c(i + 1,j) + c(i,j + 2) + c(i + 3,j) + c(i,j - 3) +
|
||||
& c(i - 2,j) + c(i,j - 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,13
|
||||
do i = 4,13
|
||||
a(i,j) = a(i + 1,j) + a(i,j + 2) + a(i + 3,j) + a(i,j - 3) +
|
||||
& a(i - 2,j) + a(i,j - 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -------------------------------------------acrred2111
|
||||
subroutine acrred2111 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,0:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2111'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i,j) + c(i,j + 1)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:0,0:1))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i,j) + a(i,j + 1)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2112
|
||||
subroutine acrred2112 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (0:3,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2112'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 3,14
|
||||
do j = 3,14
|
||||
c(i,j) = c(i,j) + c(i + 1,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(0:1,0:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 3,14
|
||||
do i = 3,14
|
||||
a(i,j) = a(i,j) + a(i + 1,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2113
|
||||
subroutine acrred2113 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:3,3:0):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2113'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 4,13
|
||||
do j = 4,13
|
||||
c(i,j) = c(i,j - 3) + c(i + 3,j) + c(i - 3,j)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:3,3:0))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,13
|
||||
do i = 4,13
|
||||
a(i,j) = a(i,j - 3) + a(i + 3,j) + a(i - 3,j)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2114
|
||||
subroutine acrred2114 ()
|
||||
integer ,parameter:: n = 16,m = 16,nl = 1000
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
character*7 :: tname
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (3:0,3:3):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2114'
|
||||
allocate(a(16,16),c(16,16))
|
||||
nnl = 1000
|
||||
call serial2(c,16,16,1000)
|
||||
do i = 4,13
|
||||
do j = 4,13
|
||||
c(i,j) = c(i - 3,j) + c(i,j + 3)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,16
|
||||
do i = 1,16
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(3:0,3:3))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 4,13
|
||||
do i = 4,13
|
||||
a(i,j) = a(i - 3,j) + a(i,j + 3)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! --------------------------------------------acrred2115
|
||||
subroutine acrred2115 ()
|
||||
integer ,parameter:: n = 59,m = 59,nl = 1000
|
||||
character*7 :: tname
|
||||
!$SPF ANALYSIS (PROCESS_PRIVATE (c))
|
||||
integer ,allocatable:: a(:,:),c(:,:)
|
||||
integer :: nloopi,nloopj
|
||||
intrinsic min
|
||||
|
||||
! DVM$ SHADOW (11:11,11:11):: A
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
tname = 'acrred2115'
|
||||
allocate(a(59,59),c(59,59))
|
||||
nnl = 1000
|
||||
call serial2(c,59,59,1000)
|
||||
do i = 12,48
|
||||
do j = 12,48
|
||||
c(i,j) = c(i + 11,j) + c(i,j + 10) + c(i + 9,j) + c(i,j - 11
|
||||
&) + c(i - 10,j) + c(i,j - 9)
|
||||
enddo
|
||||
enddo
|
||||
nloopi = 1000
|
||||
nloopj = 1000
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J)
|
||||
! DVM$ REGION
|
||||
! DVM$ ACTUAL (NLOOPI,NLOOPJ)
|
||||
do j = 1,59
|
||||
do i = 1,59
|
||||
a(i,j) = 1000 + i + j
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), acrredOSS (A(11:11,11:11))
|
||||
! DVM$ PARALLEL (J,I) ON A(I,J), REDUCTION (MIN(NLOOPI),MIN(NLOOPJ))
|
||||
do j = 12,48
|
||||
do i = 12,48
|
||||
a(i,j) = a(i + 11,j) + a(i,j + 10) + a(i + 9,j) + a(i,j - 11
|
||||
&) + a(i - 10,j) + a(i,j - 9)
|
||||
if (a(i,j) .ne. c(i,j)) then
|
||||
nloopi = min (nloopi,i)
|
||||
nloopj = min (nloopj,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! DVM$ GET_ACTUAL (NLOOPI)
|
||||
! DVM$ END REGION
|
||||
if (nloopi .eq. 1000) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
deallocate(a,c)
|
||||
end
|
||||
|
||||
|
||||
! -----------------------------------------------
|
||||
subroutine serial2 (ar, n, m, nl)
|
||||
integer :: ar(n,m)
|
||||
integer :: nl
|
||||
intent(in) m,n,nl
|
||||
intent(out) ar
|
||||
do i = 1,n
|
||||
do j = 1,m
|
||||
ar(i,j) = nl + i + j
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character*7 :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
1010
Downloads/bugreport_1733152707/acrred21/v3/p1/acrred21.for
Normal file
1010
Downloads/bugreport_1733152707/acrred21/v3/p1/acrred21.for
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,34 @@
|
||||
Mon Dec 2 18:10:40 2024: create and connect to server socket with port 14733
|
||||
Mon Dec 2 18:10:40 2024: done
|
||||
Mon Dec 2 18:10:40 2024: start main communications
|
||||
Mon Dec 2 18:10:40 2024: wait for command from server
|
||||
Mon Dec 2 18:10:40 2024: done with message size 37
|
||||
Mon Dec 2 18:10:40 2024: decode message as analysis
|
||||
Mon Dec 2 18:10:40 2024: send results to server
|
||||
Mon Dec 2 18:10:40 2024: done with code 0
|
||||
Mon Dec 2 18:10:40 2024: wait for command from server
|
||||
Mon Dec 2 18:10:40 2024: done with message size 108
|
||||
Mon Dec 2 18:10:40 2024: decode message as analysis
|
||||
Mon Dec 2 18:10:40 2024: send results to server
|
||||
Mon Dec 2 18:10:40 2024: done with code 0
|
||||
Mon Dec 2 18:10:40 2024: wait for command from server
|
||||
Mon Dec 2 18:11:05 2024: done with message size 261
|
||||
Mon Dec 2 18:11:05 2024: decode message as analysis
|
||||
Mon Dec 2 18:11:07 2024: send results to server
|
||||
Mon Dec 2 18:11:07 2024: done with code 0
|
||||
Mon Dec 2 18:11:07 2024: wait for command from server
|
||||
Mon Dec 2 18:13:36 2024: done with message size 84
|
||||
Mon Dec 2 18:13:36 2024: decode message as analysis
|
||||
Mon Dec 2 18:13:36 2024: send results to server
|
||||
Mon Dec 2 18:13:36 2024: done with code 0
|
||||
Mon Dec 2 18:13:36 2024: wait for command from server
|
||||
Mon Dec 2 18:15:35 2024: done with message size 84
|
||||
Mon Dec 2 18:15:35 2024: decode message as analysis
|
||||
Mon Dec 2 18:15:35 2024: send results to server
|
||||
Mon Dec 2 18:15:35 2024: done with code 0
|
||||
Mon Dec 2 18:15:35 2024: wait for command from server
|
||||
Mon Dec 2 18:17:45 2024: done with message size 84
|
||||
Mon Dec 2 18:17:45 2024: decode message as analysis
|
||||
Mon Dec 2 18:17:45 2024: send results to server
|
||||
Mon Dec 2 18:17:45 2024: done with code 0
|
||||
Mon Dec 2 18:17:45 2024: wait for command from server
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": true,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": true,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 100,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": "",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": true,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": false,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": ""
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_ACROSS_REDUCTION/acrred21/v3/p1/visualiser_data/options/acrred21.for.dep
|
||||
@@ -0,0 +1 @@
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_ACROSS_REDUCTION/acrred21/v3/visualiser_data/options/acrred21.for.dep
|
||||
@@ -0,0 +1 @@
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_ACROSS_REDUCTION/acrred21/visualiser_data/options/acrred21.for.dep
|
||||
11
Downloads/bugreport_1737466258/test_routine_4/call.for
Normal file
11
Downloads/bugreport_1737466258/test_routine_4/call.for
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
double precision function calculate (value)
|
||||
double precision :: value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
167
Downloads/bugreport_1737466258/test_routine_4/contains31.for
Normal file
167
Downloads/bugreport_1737466258/test_routine_4/contains31.for
Normal file
@@ -0,0 +1,167 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2 ,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),sol
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
CDVM$ INTERVAL 1
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol(i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
CDVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
11
Downloads/bugreport_1737466258/test_routine_4/m1/call.for
Normal file
11
Downloads/bugreport_1737466258/test_routine_4/m1/call.for
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
double precision function calculate (value)
|
||||
double precision :: value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
166
Downloads/bugreport_1737466258/test_routine_4/m1/contains31.for
Normal file
166
Downloads/bugreport_1737466258/test_routine_4/m1/contains31.for
Normal file
@@ -0,0 +1,166 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2 ,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),sol
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol(i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
13
Downloads/bugreport_1737466258/test_routine_4/m1/sol.for
Normal file
13
Downloads/bugreport_1737466258/test_routine_4/m1/sol.for
Normal file
@@ -0,0 +1,13 @@
|
||||
double precision FUNCTION sol (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
double precision val
|
||||
|
||||
sol = 10.*val(ii,jj,kk,nx,ny,nz)
|
||||
|
||||
END
|
||||
double precision FUNCTION val (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
|
||||
val = (ii-1)/(nx-1) +(jj-1)/(ny-1)+
|
||||
> (kk-1)/(nz-1)
|
||||
END
|
||||
11
Downloads/bugreport_1737466258/test_routine_4/m2/call.for
Normal file
11
Downloads/bugreport_1737466258/test_routine_4/m2/call.for
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
double precision function calculate (value)
|
||||
double precision :: value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
167
Downloads/bugreport_1737466258/test_routine_4/m2/contains31.for
Normal file
167
Downloads/bugreport_1737466258/test_routine_4/m2/contains31.for
Normal file
@@ -0,0 +1,167 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2 ,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),sol
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
CDVM$ INTERVAL 1
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol(i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
CDVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
13
Downloads/bugreport_1737466258/test_routine_4/m2/sol.for
Normal file
13
Downloads/bugreport_1737466258/test_routine_4/m2/sol.for
Normal file
@@ -0,0 +1,13 @@
|
||||
double precision FUNCTION sol (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
double precision val
|
||||
|
||||
sol = 10.*val(ii,jj,kk,nx,ny,nz)
|
||||
|
||||
END
|
||||
double precision FUNCTION val (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
|
||||
val = (ii-1)/(nx-1) +(jj-1)/(ny-1)+
|
||||
> (kk-1)/(nz-1)
|
||||
END
|
||||
11
Downloads/bugreport_1737466258/test_routine_4/m3/call.for
Normal file
11
Downloads/bugreport_1737466258/test_routine_4/m3/call.for
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
double precision function calculate (value)
|
||||
double precision :: value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
167
Downloads/bugreport_1737466258/test_routine_4/m3/contains31.for
Normal file
167
Downloads/bugreport_1737466258/test_routine_4/m3/contains31.for
Normal file
@@ -0,0 +1,167 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2 ,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),sol
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
CDVM$ INTERVAL 1
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol(i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
CDVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
13
Downloads/bugreport_1737466258/test_routine_4/m3/sol.for
Normal file
13
Downloads/bugreport_1737466258/test_routine_4/m3/sol.for
Normal file
@@ -0,0 +1,13 @@
|
||||
double precision FUNCTION sol (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
double precision val
|
||||
|
||||
sol = 10.*val(ii,jj,kk,nx,ny,nz)
|
||||
|
||||
END
|
||||
double precision FUNCTION val (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
|
||||
val = (ii-1)/(nx-1) +(jj-1)/(ny-1)+
|
||||
> (kk-1)/(nz-1)
|
||||
END
|
||||
11
Downloads/bugreport_1737466258/test_routine_4/m4/call.for
Normal file
11
Downloads/bugreport_1737466258/test_routine_4/m4/call.for
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
double precision function calculate (value)
|
||||
double precision :: value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
167
Downloads/bugreport_1737466258/test_routine_4/m4/contains31.for
Normal file
167
Downloads/bugreport_1737466258/test_routine_4/m4/contains31.for
Normal file
@@ -0,0 +1,167 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2 ,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),sol
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
CDVM$ INTERVAL 1
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol(i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
CDVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
13
Downloads/bugreport_1737466258/test_routine_4/m4/sol.for
Normal file
13
Downloads/bugreport_1737466258/test_routine_4/m4/sol.for
Normal file
@@ -0,0 +1,13 @@
|
||||
double precision FUNCTION sol (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
double precision val
|
||||
|
||||
sol = 10.*val(ii,jj,kk,nx,ny,nz)
|
||||
|
||||
END
|
||||
double precision FUNCTION val (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
|
||||
val = (ii-1)/(nx-1) +(jj-1)/(ny-1)+
|
||||
> (kk-1)/(nz-1)
|
||||
END
|
||||
11
Downloads/bugreport_1737466258/test_routine_4/m5/call.for
Normal file
11
Downloads/bugreport_1737466258/test_routine_4/m5/call.for
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
double precision function calculate (value)
|
||||
double precision :: value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
167
Downloads/bugreport_1737466258/test_routine_4/m5/contains31.for
Normal file
167
Downloads/bugreport_1737466258/test_routine_4/m5/contains31.for
Normal file
@@ -0,0 +1,167 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2236 and build date: Nov 7 2023 14:50:57
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** save SPF directives
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2 ,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),sol
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
CDVM$ INTERVAL 1
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol(i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
CDVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
double precision :: calculate
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate((a(i - 1,j,k) + a(i + 1,j,k) + a(i,j - 1,k) +
|
||||
&a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1)))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
13
Downloads/bugreport_1737466258/test_routine_4/m5/sol.for
Normal file
13
Downloads/bugreport_1737466258/test_routine_4/m5/sol.for
Normal file
@@ -0,0 +1,13 @@
|
||||
double precision FUNCTION sol (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
double precision val
|
||||
|
||||
sol = 10.*val(ii,jj,kk,nx,ny,nz)
|
||||
|
||||
END
|
||||
double precision FUNCTION val (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
|
||||
val = (ii-1)/(nx-1) +(jj-1)/(ny-1)+
|
||||
> (kk-1)/(nz-1)
|
||||
END
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": false,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": false,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 50,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": false,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p1/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p1/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2237 and build date: Nov 8 2023 13:50:20
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
236
Downloads/bugreport_1737466258/test_routine_4/p1/contains31.for
Normal file
236
Downloads/bugreport_1737466258/test_routine_4/p1/contains31.for
Normal file
@@ -0,0 +1,236 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2237 and build date: Nov 8 2023 13:50:20
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
!DVM$ SHADOW a2( 1:1,1:1,1:1 )
|
||||
!DVM$ SHADOW a( 1:1,1:1,1:1 )
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),sol
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a
|
||||
intent(in) nz,ny,nx
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) b,a
|
||||
intent(in) nz,ny,nx
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
19
Downloads/bugreport_1737466258/test_routine_4/p1/sol.for
Normal file
19
Downloads/bugreport_1737466258/test_routine_4/p1/sol.for
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2237 and build date: Nov 8 2023 13:50:20
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** generated by SAPFOR
|
||||
double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) nz,ny,nx,kk,jj,ii
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) nz,ny,nx,kk,jj,ii
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_PRIVATE_ROUTINE_Kolganov/test_routine_4/p1/visualiser_data/options/call.for.dep
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_PRIVATE_ROUTINE_Kolganov/test_routine_4/p1/visualiser_data/options/contains31.for.dep
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_PRIVATE_ROUTINE_Kolganov/test_routine_4/p1/visualiser_data/options/sol.for.dep
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p10/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p10/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
250
Downloads/bugreport_1737466258/test_routine_4/p10/contains31.for
Normal file
250
Downloads/bugreport_1737466258/test_routine_4/p10/contains31.for
Normal file
@@ -0,0 +1,250 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
!DVM$ SHADOW a2( 1:1,1:1,1:1 )
|
||||
!DVM$ SHADOW a( 1:1,1:1,1:1 )
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz)
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(in) nx,ny,nz
|
||||
intent(out) a
|
||||
interface
|
||||
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
end function
|
||||
end interface
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a,b
|
||||
intent(in) nx,ny,nz
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
20
Downloads/bugreport_1737466258/test_routine_4/p10/sol.for
Normal file
20
Downloads/bugreport_1737466258/test_routine_4/p10/sol.for
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
Tue Jan 21 16:13:23 2025: create and connect to server socket with port 5577
|
||||
Tue Jan 21 16:13:23 2025: done
|
||||
Tue Jan 21 16:13:23 2025: start main communications
|
||||
Tue Jan 21 16:13:23 2025: wait for command from server
|
||||
Tue Jan 21 16:13:23 2025: done with message size 37
|
||||
Tue Jan 21 16:13:23 2025: decode message as analysis
|
||||
Tue Jan 21 16:13:23 2025: send results to server
|
||||
Tue Jan 21 16:13:23 2025: done with code 0
|
||||
Tue Jan 21 16:13:23 2025: wait for command from server
|
||||
Tue Jan 21 16:13:23 2025: done with message size 116
|
||||
Tue Jan 21 16:13:23 2025: decode message as analysis
|
||||
Tue Jan 21 16:13:23 2025: send results to server
|
||||
Tue Jan 21 16:13:23 2025: done with code 0
|
||||
Tue Jan 21 16:13:23 2025: wait for command from server
|
||||
Tue Jan 21 16:13:49 2025: done with message size 268
|
||||
Tue Jan 21 16:13:49 2025: decode message as analysis
|
||||
Tue Jan 21 16:13:51 2025: send results to server
|
||||
Tue Jan 21 16:13:51 2025: done with code 0
|
||||
Tue Jan 21 16:13:51 2025: wait for command from server
|
||||
Tue Jan 21 16:14:31 2025: done with message size 84
|
||||
Tue Jan 21 16:14:31 2025: decode message as analysis
|
||||
Tue Jan 21 16:14:31 2025: send results to server
|
||||
Tue Jan 21 16:14:31 2025: done with code 0
|
||||
Tue Jan 21 16:14:31 2025: wait for command from server
|
||||
Tue Jan 21 16:15:55 2025: done with message size 84
|
||||
Tue Jan 21 16:15:55 2025: decode message as analysis
|
||||
Tue Jan 21 16:15:55 2025: send results to server
|
||||
Tue Jan 21 16:15:55 2025: done with code 0
|
||||
Tue Jan 21 16:15:55 2025: wait for command from server
|
||||
Tue Jan 21 16:30:23 2025: done with message size 84
|
||||
Tue Jan 21 16:30:23 2025: decode message as analysis
|
||||
Tue Jan 21 16:30:23 2025: send results to server
|
||||
Tue Jan 21 16:30:23 2025: done with code 0
|
||||
Tue Jan 21 16:30:23 2025: wait for command from server
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": false,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": false,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 50,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": false,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p2/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p2/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2237 and build date: Nov 8 2023 13:50:20
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
240
Downloads/bugreport_1737466258/test_routine_4/p2/contains31.for
Normal file
240
Downloads/bugreport_1737466258/test_routine_4/p2/contains31.for
Normal file
@@ -0,0 +1,240 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2237 and build date: Nov 8 2023 13:50:20
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
!DVM$ SHADOW a2( 1:1,1:1,1:1 )
|
||||
!DVM$ SHADOW a( 1:1,1:1,1:1 )
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),sol
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a
|
||||
intent(in) nz,ny,nx
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) b,a
|
||||
intent(in) nz,ny,nx
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
19
Downloads/bugreport_1737466258/test_routine_4/p2/sol.for
Normal file
19
Downloads/bugreport_1737466258/test_routine_4/p2/sol.for
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2237 and build date: Nov 8 2023 13:50:20
|
||||
! *** Enabled options ***:
|
||||
! *** consider DVMH directives
|
||||
! *** generated by SAPFOR
|
||||
double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) nz,ny,nx,kk,jj,ii
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) nz,ny,nx,kk,jj,ii
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
Wed Nov 8 19:40:29 2023: create and connect to server socket with port 3031
|
||||
Wed Nov 8 19:40:29 2023: done
|
||||
Wed Nov 8 19:40:29 2023: start main communications
|
||||
Wed Nov 8 19:40:29 2023: wait for command from server
|
||||
Wed Nov 8 19:40:29 2023: done with message size 37
|
||||
Wed Nov 8 19:40:29 2023: decode message as analysis
|
||||
Wed Nov 8 19:40:29 2023: send results to server
|
||||
Wed Nov 8 19:40:29 2023: done with code 0
|
||||
Wed Nov 8 19:40:29 2023: wait for command from server
|
||||
Wed Nov 8 19:40:29 2023: done with message size 119
|
||||
Wed Nov 8 19:40:29 2023: decode message as analysis
|
||||
Wed Nov 8 19:40:29 2023: send results to server
|
||||
Wed Nov 8 19:40:29 2023: done with code 0
|
||||
Wed Nov 8 19:40:29 2023: wait for command from server
|
||||
Wed Nov 8 19:42:32 2023: done with message size 271
|
||||
Wed Nov 8 19:42:32 2023: decode message as analysis
|
||||
Wed Nov 8 19:42:33 2023: send results to server
|
||||
Wed Nov 8 19:42:33 2023: done with code 0
|
||||
Wed Nov 8 19:42:33 2023: wait for command from server
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_PRIVATE_ROUTINE_Kolganov/test_routine_4/p2/visualiser_data/options/call.for.dep
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_PRIVATE_ROUTINE_Kolganov/test_routine_4/p2/visualiser_data/options/contains31.for.dep
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_PRIVATE_ROUTINE_Kolganov/test_routine_4/p2/visualiser_data/options/sol.for.dep
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p3/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p3/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
248
Downloads/bugreport_1737466258/test_routine_4/p3/contains31.for
Normal file
248
Downloads/bugreport_1737466258/test_routine_4/p3/contains31.for
Normal file
@@ -0,0 +1,248 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (*,*,*) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(*,*,*)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz)
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(in) nx,ny,nz
|
||||
intent(out) a
|
||||
interface
|
||||
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
end function
|
||||
end interface
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(*,*,*)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a,b
|
||||
intent(in) nx,ny,nz
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
20
Downloads/bugreport_1737466258/test_routine_4/p3/sol.for
Normal file
20
Downloads/bugreport_1737466258/test_routine_4/p3/sol.for
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": false,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": false,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 50,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": false,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p4/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p4/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
250
Downloads/bugreport_1737466258/test_routine_4/p4/contains31.for
Normal file
250
Downloads/bugreport_1737466258/test_routine_4/p4/contains31.for
Normal file
@@ -0,0 +1,250 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
!DVM$ SHADOW a2( 0:0,0:0,1:1 )
|
||||
!DVM$ SHADOW a( 0:0,0:0,1:1 )
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (*,*,BLOCK) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(*,*,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz)
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(in) nx,ny,nz
|
||||
intent(out) a
|
||||
interface
|
||||
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
end function
|
||||
end interface
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(*,*,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a,b
|
||||
intent(in) nx,ny,nz
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
20
Downloads/bugreport_1737466258/test_routine_4/p4/sol.for
Normal file
20
Downloads/bugreport_1737466258/test_routine_4/p4/sol.for
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": false,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": false,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 50,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": false,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p5/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p5/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
250
Downloads/bugreport_1737466258/test_routine_4/p5/contains31.for
Normal file
250
Downloads/bugreport_1737466258/test_routine_4/p5/contains31.for
Normal file
@@ -0,0 +1,250 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
!DVM$ SHADOW a2( 0:0,1:1,0:0 )
|
||||
!DVM$ SHADOW a( 0:0,1:1,0:0 )
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (*,BLOCK,*) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(*,BLOCK,*)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz)
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(in) nx,ny,nz
|
||||
intent(out) a
|
||||
interface
|
||||
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
end function
|
||||
end interface
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(*,BLOCK,*)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a,b
|
||||
intent(in) nx,ny,nz
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
20
Downloads/bugreport_1737466258/test_routine_4/p5/sol.for
Normal file
20
Downloads/bugreport_1737466258/test_routine_4/p5/sol.for
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": false,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": false,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 50,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": false,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p6/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p6/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
250
Downloads/bugreport_1737466258/test_routine_4/p6/contains31.for
Normal file
250
Downloads/bugreport_1737466258/test_routine_4/p6/contains31.for
Normal file
@@ -0,0 +1,250 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
!DVM$ SHADOW a2( 0:0,1:1,1:1 )
|
||||
!DVM$ SHADOW a( 0:0,1:1,1:1 )
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (*,BLOCK,BLOCK) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(*,BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz)
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(in) nx,ny,nz
|
||||
intent(out) a
|
||||
interface
|
||||
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
end function
|
||||
end interface
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(*,BLOCK,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a,b
|
||||
intent(in) nx,ny,nz
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
20
Downloads/bugreport_1737466258/test_routine_4/p6/sol.for
Normal file
20
Downloads/bugreport_1737466258/test_routine_4/p6/sol.for
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": false,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": false,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 50,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": false,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p7/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p7/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
250
Downloads/bugreport_1737466258/test_routine_4/p7/contains31.for
Normal file
250
Downloads/bugreport_1737466258/test_routine_4/p7/contains31.for
Normal file
@@ -0,0 +1,250 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
!DVM$ SHADOW a2( 1:1,0:0,0:0 )
|
||||
!DVM$ SHADOW a( 1:1,0:0,0:0 )
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (BLOCK,*,*) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,*,*)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz)
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(in) nx,ny,nz
|
||||
intent(out) a
|
||||
interface
|
||||
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
end function
|
||||
end interface
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,*,*)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a,b
|
||||
intent(in) nx,ny,nz
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
20
Downloads/bugreport_1737466258/test_routine_4/p7/sol.for
Normal file
20
Downloads/bugreport_1737466258/test_routine_4/p7/sol.for
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": false,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": false,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 50,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": false,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p8/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p8/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
250
Downloads/bugreport_1737466258/test_routine_4/p8/contains31.for
Normal file
250
Downloads/bugreport_1737466258/test_routine_4/p8/contains31.for
Normal file
@@ -0,0 +1,250 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
!DVM$ SHADOW a2( 1:1,0:0,1:1 )
|
||||
!DVM$ SHADOW a( 1:1,0:0,1:1 )
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (BLOCK,*,BLOCK) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,*,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz)
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(in) nx,ny,nz
|
||||
intent(out) a
|
||||
interface
|
||||
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
end function
|
||||
end interface
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,*,BLOCK)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a,b
|
||||
intent(in) nx,ny,nz
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
20
Downloads/bugreport_1737466258/test_routine_4/p8/sol.for
Normal file
20
Downloads/bugreport_1737466258/test_routine_4/p8/sol.for
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": false,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": false,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 50,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": false,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
12
Downloads/bugreport_1737466258/test_routine_4/p9/call.for
Normal file
12
Downloads/bugreport_1737466258/test_routine_4/p9/call.for
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
250
Downloads/bugreport_1737466258/test_routine_4/p9/contains31.for
Normal file
250
Downloads/bugreport_1737466258/test_routine_4/p9/contains31.for
Normal file
@@ -0,0 +1,250 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
|
||||
!DVM$ ALIGN :: a
|
||||
!DVM$ ALIGN :: b
|
||||
!DVM$ ALIGN :: a2
|
||||
!DVM$ ALIGN :: b2
|
||||
!DVM$ DYNAMIC a,a2,b,b2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
!DVM$ SHADOW a2( 1:1,1:1,0:0 )
|
||||
!DVM$ SHADOW a( 1:1,1:1,0:0 )
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
!DVM$ TEMPLATE,COMMON:: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE (BLOCK,BLOCK,*) :: dvmh_temp0
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
|
||||
!DVM$ REALIGN a2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
!DVM$ REALIGN b2(iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX1,iEX2,iEX3)
|
||||
continue
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
!DVM$ INHERIT a
|
||||
!DVM$ DYNAMIC a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK,*)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz)
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
intent(in) nx,ny,nz
|
||||
intent(out) a
|
||||
interface
|
||||
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
end function
|
||||
end interface
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (i,j,k)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
!DVM$ INHERIT b,a
|
||||
!DVM$ DYNAMIC b,a
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:4,1:4,1:4)
|
||||
!DVM$ DISTRIBUTE dvmh_temp0(BLOCK,BLOCK,*)
|
||||
!DVM$ DYNAMIC dvmh_temp0
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
intent(inout) a,b
|
||||
intent(in) nx,ny,nz
|
||||
intrinsic abs,max
|
||||
interface
|
||||
|
||||
pure double precision function calculate (value)
|
||||
!DVM$ ROUTINE
|
||||
double precision :: value
|
||||
intent(in) value
|
||||
end function
|
||||
end interface
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON b(i,j,k), PRIVATE (i,j,k),SHADOW_RENEW (a)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
!DVM$ REGION
|
||||
!DVM$ PARALLEL (k,j,i) ON a(i,j,k), PRIVATE (bt,i,j,k),REDUCTION (max (e
|
||||
!DVM$&ps))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END REGION
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
character(len=9) :: name
|
||||
intent(in) name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
20
Downloads/bugreport_1737466258/test_routine_4/p9/sol.for
Normal file
20
Downloads/bugreport_1737466258/test_routine_4/p9/sol.for
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2382 and build date: Jan 15 2025 15:14:37
|
||||
! *** Enabled options ***:
|
||||
! *** maximum shadow width is 50 percent
|
||||
! *** generated by SAPFOR
|
||||
pure double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
!DVM$ ROUTINE
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
pure double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
intent(in) ii,jj,kk,nx,ny,nz
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"STATIC_SHADOW_ANALYSIS": false,
|
||||
"STATIC_PRIVATE_ANALYSIS": true,
|
||||
"FREE_FORM": false,
|
||||
"KEEP_DVM_DIRECTIVES": false,
|
||||
"KEEP_SPF_DIRECTIVES": false,
|
||||
"PARALLELIZE_FREE_LOOPS": false,
|
||||
"MAX_SHADOW_WIDTH": 50,
|
||||
"OUTPUT_UPPER": false,
|
||||
"TRANSLATE_MESSAGES": true,
|
||||
"KEEP_LOOPS_CLOSE_NESTING": false,
|
||||
"KEEP_GCOV": false,
|
||||
"ANALYSIS_OPTIONS": " ",
|
||||
"DEBUG_PRINT_ON": false,
|
||||
"MPI_PROGRAM": false,
|
||||
"IGNORE_IO_SAPFOR": false,
|
||||
"KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS": false,
|
||||
"PARSE_FOR_INLINE": false,
|
||||
"Precompilation": true,
|
||||
"SaveModifications": true,
|
||||
"GCOVLimit": 10,
|
||||
"DVMConvertationOptions": " "
|
||||
}
|
||||
13
Downloads/bugreport_1737466258/test_routine_4/sol.for
Normal file
13
Downloads/bugreport_1737466258/test_routine_4/sol.for
Normal file
@@ -0,0 +1,13 @@
|
||||
double precision FUNCTION sol (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
double precision val
|
||||
|
||||
sol = 10.*val(ii,jj,kk,nx,ny,nz)
|
||||
|
||||
END
|
||||
double precision FUNCTION val (ii,jj,kk,nx,ny,nz)
|
||||
integer:: ii,jj,kk,nx,ny,nz
|
||||
|
||||
val = (ii-1)/(nx-1) +(jj-1)/(ny-1)+
|
||||
> (kk-1)/(nz-1)
|
||||
END
|
||||
15
Downloads/bugreport_1737466258/test_routine_4/v1/call.for
Normal file
15
Downloads/bugreport_1737466258/test_routine_4/v1/call.for
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2343 and build date: May 19 2024 20:06:27
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** MPI program regime (shared memory parallelization)
|
||||
! *** ignore I/O checker for arrays (DVM I/O limitations)
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
double precision function calculate (value)
|
||||
implicit none
|
||||
double precision :: value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
191
Downloads/bugreport_1737466258/test_routine_4/v1/contains31.for
Normal file
191
Downloads/bugreport_1737466258/test_routine_4/v1/contains31.for
Normal file
@@ -0,0 +1,191 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2343 and build date: May 19 2024 20:06:27
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** MPI program regime (shared memory parallelization)
|
||||
! *** ignore I/O checker for arrays (DVM I/O limitations)
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
program contains1
|
||||
implicit none
|
||||
|
||||
!
|
||||
! integer ,parameter:: nxd = 32,nyd = 64,nzd = 32,itmaxd = 50
|
||||
integer ,parameter:: nxd = 4,nyd = 4,nzd = 4,itmaxd = 2
|
||||
double precision ,dimension(:,:,:):: a,b,a2,b2
|
||||
allocatable:: a,b,a2,b2
|
||||
|
||||
! DVM$ ALIGN (I,J,K) WITH A(I,J,K):: B,A2,B2
|
||||
! DVM$ DISTRIBUTE (BLOCK,BLOCK,BLOCK):: A
|
||||
double precision :: relax2,eps1,eps2,calculate
|
||||
character(len=9) :: tname='contains1'
|
||||
integer :: it,itmax,nx,ny,nz
|
||||
real :: relax1
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! Read input file (if it exists), else take
|
||||
! defaults from parameters
|
||||
!---------------------------------------------------------------------
|
||||
! open (unit=2,file='input.dat',status='old', iostat=istatus)
|
||||
!
|
||||
! if (istatus .eq. 0) then
|
||||
! read (2,*) nx,ny,nz
|
||||
! read (2,*) itmax
|
||||
! close(2)
|
||||
! else
|
||||
nx = nxd
|
||||
ny = nyd
|
||||
nz = nzd
|
||||
itmax = itmaxd
|
||||
|
||||
! endif
|
||||
allocate(a(nx,ny,nz),b(nx,ny,nz))
|
||||
allocate(a2(nx,ny,nz),b2(nx,ny,nz))
|
||||
call init(a,nx,ny,nz)
|
||||
call init(a2,nx,ny,nz)
|
||||
|
||||
!ВМЬ
|
||||
! ITERATIONS
|
||||
do it = 1,itmax
|
||||
eps1 = relax1 ()
|
||||
eps2 = relax2 (a2,b2,nx,ny,nz)
|
||||
enddo
|
||||
|
||||
! END ITERATIONS
|
||||
deallocate(a,b,a2,b2)
|
||||
if (eps1 .eq. eps2) then
|
||||
call ansyes(tname)
|
||||
else
|
||||
call ansno(tname)
|
||||
endif
|
||||
contains
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax1 ()
|
||||
implicit none
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: eps,bt
|
||||
double precision :: calculate
|
||||
integer :: i,j,k,max
|
||||
real :: abs
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! print *, b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax1 = eps
|
||||
end function
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
subroutine init (a, nx, ny, nz)
|
||||
implicit none
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),sol
|
||||
|
||||
! DVM$ INHERIT A
|
||||
integer :: nx,ny,nz
|
||||
integer :: i,j,k
|
||||
|
||||
! solution (i, j, k) = 10. * (i - 1) / (nx - 1) + 10. * (j - 1) / (n
|
||||
! &y - 1) + 10. * (k - 1) / (nz - 1)
|
||||
!DVM$ INTERVAL 1
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K)
|
||||
do k = 1,nz
|
||||
do j = 1,ny
|
||||
do i = 1,nx
|
||||
if (k .eq. 1 .or. k .eq. nz .or. j .eq. 1 .or. j .eq. ny
|
||||
&.or. i .eq. 1 .or. i .eq. nx) then
|
||||
a(i,j,k) = sol (i,j,k,nx,ny,nz)
|
||||
else
|
||||
a(i,j,k) = 0.d0
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
!DVM$ END INTERVAL
|
||||
end
|
||||
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision function relax2 (a, b, nx, ny, nz)
|
||||
implicit none
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
!---------------------------------------------------------------------
|
||||
double precision :: a(nx,ny,nz),b(nx,ny,nz),eps,bt
|
||||
double precision :: calculate
|
||||
|
||||
! DVM$ INHERIT A,B
|
||||
integer :: nx,ny,nz
|
||||
integer :: i,j,k,max
|
||||
real :: abs
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON B(I,J,K), SHADOW_RENEW (A)
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
b(i,j,k) = calculate (a(i - 1,j,k) + a(i + 1,j,k) + a(i,j
|
||||
& - 1,k) + a(i,j + 1,k) + a(i,j,k - 1) + a(i,j,k + 1))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
! print *,b
|
||||
eps = 0.d0
|
||||
|
||||
! DVM$ PARALLEL (K,J,I) ON A(I,J,K), REDUCTION (MAX(EPS))
|
||||
do k = 2,nz - 1
|
||||
do j = 2,ny - 1
|
||||
do i = 2,nx - 1
|
||||
bt = b(i,j,k)
|
||||
eps = max (eps,abs (bt - a(i,j,k)))
|
||||
a(i,j,k) = bt
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
relax2 = eps
|
||||
end
|
||||
|
||||
subroutine ansyes (name)
|
||||
implicit none
|
||||
character(len=9) :: name
|
||||
print *, name,' - complete'
|
||||
end
|
||||
|
||||
subroutine ansno (name)
|
||||
implicit none
|
||||
character(len=9) :: name
|
||||
print *, name,' - ***error'
|
||||
end
|
||||
|
||||
23
Downloads/bugreport_1737466258/test_routine_4/v1/sol.for
Normal file
23
Downloads/bugreport_1737466258/test_routine_4/v1/sol.for
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2343 and build date: May 19 2024 20:06:27
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** MPI program regime (shared memory parallelization)
|
||||
! *** ignore I/O checker for arrays (DVM I/O limitations)
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
double precision function sol (ii, jj, kk, nx, ny, nz)
|
||||
implicit none
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
double precision :: val
|
||||
sol = 10. * val (ii,jj,kk,nx,ny,nz)
|
||||
end
|
||||
|
||||
double precision function val (ii, jj, kk, nx, ny, nz)
|
||||
implicit none
|
||||
integer :: ii,jj,kk,nx,ny,nz
|
||||
val = (ii - 1) / (nx - 1) + (jj - 1) / (ny - 1) + (kk - 1) / (nz -
|
||||
& 1)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_PRIVATE_ROUTINE_Kolganov/test_routine_4/v1/visualiser_data/options/call.for.dep
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_PRIVATE_ROUTINE_Kolganov/test_routine_4/v1/visualiser_data/options/contains31.for.dep
|
||||
E:/USERS/Olga/WORK/VISUAL_prj/VISUAL_PRIVATE_ROUTINE_Kolganov/test_routine_4/v1/visualiser_data/options/sol.for.dep
|
||||
15
Downloads/bugreport_1737466258/test_routine_4/v2/call.for
Normal file
15
Downloads/bugreport_1737466258/test_routine_4/v2/call.for
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
! *** generated by SAPFOR with version 2348 and build date: May 25 2024 20:14:21
|
||||
! *** Enabled options ***:
|
||||
! *** shadow optimization
|
||||
! *** save SPF directives
|
||||
! *** MPI program regime (shared memory parallelization)
|
||||
! *** ignore I/O checker for arrays (DVM I/O limitations)
|
||||
! *** maximum shadow width is 100 percent
|
||||
! *** generated by SAPFOR
|
||||
double precision function calculate (value)
|
||||
implicit none
|
||||
double precision :: value
|
||||
calculate = value / 6
|
||||
end
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user