v++
Папка для загрузок, и пропущенный баг с настройками визуализатора.
This commit is contained in:
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": " "
|
||||
}
|
||||
Reference in New Issue
Block a user