46 lines
959 B
FortranFixed
46 lines
959 B
FortranFixed
|
|
|
||
|
|
program test_cascade
|
||
|
|
double precision :: y(10, 10), x(10, 10)
|
||
|
|
integer :: n, m
|
||
|
|
|
||
|
|
n=10
|
||
|
|
m=15
|
||
|
|
! y can be removed in 3 steps:
|
||
|
|
!$SPF ANALYSIS(PRIVATE(y))
|
||
|
|
do i = 1, n
|
||
|
|
do j = 1, m
|
||
|
|
y(1, j) = 2
|
||
|
|
enddo
|
||
|
|
do j = 1, m
|
||
|
|
y(1, j) = y(1, j) * 10
|
||
|
|
enddo
|
||
|
|
do j = 1, m
|
||
|
|
x(j, i) = y(1, j)
|
||
|
|
! correct result:
|
||
|
|
! x(j, i) = 2 * 10
|
||
|
|
enddo
|
||
|
|
|
||
|
|
do j = 1, m
|
||
|
|
y(2, j) = y(1, i) * 20
|
||
|
|
enddo
|
||
|
|
do j = 1, m
|
||
|
|
x(j, i) = y(2, j)
|
||
|
|
! correct result:
|
||
|
|
! x(j, i) = 2 * 10 * 20
|
||
|
|
enddo
|
||
|
|
enddo
|
||
|
|
|
||
|
|
! y can be removed is 2 steps:
|
||
|
|
!$SPF ANALYSIS(PRIVATE(y))
|
||
|
|
do i = 1, n
|
||
|
|
y(1, i) = 2
|
||
|
|
do j = 1, m
|
||
|
|
y(1, i) = y(1, i) * 10
|
||
|
|
x(j, i) = y(1, i)
|
||
|
|
! correct result:
|
||
|
|
! x(j, i) = 2 * 10
|
||
|
|
enddo
|
||
|
|
enddo
|
||
|
|
|
||
|
|
end
|