mirror of
https://review.haiku-os.org/buildtools
synced 2025-02-15 02:07:42 +01:00
* these are dependencies for gcc 4 Graphite engine build. * CLooG 0.18.0 includes ISL 0.11.1 which is the backend that the build script enables. * PPL is needed by GCC build even if it isn't the chosen backend.
270 lines
7.7 KiB
Plaintext
270 lines
7.7 KiB
Plaintext
# CLooG example file #6.
|
|
# Please read the first and second examples which are fully documented to
|
|
# understand the different parts of the input file.
|
|
#
|
|
################################################################################
|
|
# do i=1,n The problem here is to generate the #
|
|
# | do j =1,i-1 transformation of a real-life Cholesau #
|
|
# | | if (j.EQ.1) then kernel according to the allocation #
|
|
#S1| | | s1(i,j)=a(i,j)s4(j,i)**2 functions given by a good automatic #
|
|
# | | else parallelizer (e.g. PAF or LooPo). For #
|
|
#S2| | | s1(i,j)=s1(i,j-1)-s4(j,i)**2 each statement the new schedule is: #
|
|
# | if (i .EQ. 1) then T_S1(i,j) =(i+j-1,i,0,j,0,0,0) #
|
|
#S3| | s2(i)=sqrt(a(i,i)) T_S2(i,j) =(i, i,0,j,1,0,0 #
|
|
# | else T_S3(i) =(i-1, i,1,0,0,0,0 #
|
|
#S4| | s2(i)=sqrt (s1(i,i-1)) T_S4(i) =(0, i,2,0,0,0,0) #
|
|
# | do k=i+1,n T_S5(i,j,k)=(j+k-1,i,3,j,0,k,0) #
|
|
# | | do l=1,i-1 T_S6(i,j,k)=(k, i,3,j,0,k,1) #
|
|
# | | | if (l .EQ. 1) then T_S7(i,j) =(i+j, i,3,j,1,0,0) #
|
|
#S5| | | | s3(i,k,l)=a(k,i)-(s4(l,k)*s4(l,i)) T_S8(i,j) =(j, i,3,j,2,0,0) #
|
|
# | | | else #
|
|
#S6| | | | s3(i,k,l)=s3(i,k,l-1)-(s4(l,k)*s4(l,i)) #
|
|
# | | if (i .EQ.1) then In the generated code, every instances #
|
|
#S7| | | s4(i,k)=a(k,i)/s2(i) with the same p value are executed on #
|
|
# | | else processor number p (an allocation pb). #
|
|
#S8| | | s4(i,k)=s3(i,k,i-1)/s2(i) For a better view, use -fsp 2 option. #
|
|
################################################################################
|
|
#
|
|
#------------------------------------CONTEXT------------------------------------
|
|
|
|
# 1. language: FORTRAN
|
|
f
|
|
|
|
# 2. Parameters {n | n>=10}
|
|
1 3
|
|
# n 1
|
|
1 1 -10 # n>=10
|
|
|
|
# 3. We set manually the parameter name: n
|
|
1
|
|
n
|
|
|
|
#-----------------------------------POLYHEDRA-----------------------------------
|
|
|
|
# 4. Number of polyhedra:
|
|
8
|
|
|
|
# Polyhedron #1
|
|
1
|
|
# {i, j | 1<=i<=n; 1<=j<=i-1; j=1}
|
|
5 5
|
|
# i j n 1
|
|
1 1 0 0 -1 # 1<=i
|
|
1 -1 0 1 0 # i<=n
|
|
1 0 1 0 -1 # 1<=j
|
|
1 1 -1 0 -1 # j<=i-1
|
|
0 0 1 0 -1 # j=1
|
|
0 0 0 # 3 zeroes !
|
|
|
|
# Polyhedron #2
|
|
2
|
|
# {i, j | 1<=i<=n; 1<=j<=i-1; j!=1}
|
|
5 5
|
|
# i j n 1
|
|
1 1 0 0 -1 # 1<=i
|
|
1 -1 0 1 0 # i<=n
|
|
1 0 1 0 -1 # 1<=j
|
|
1 1 -1 0 -1 # j<=i-1
|
|
1 0 1 0 -2 # j>=2
|
|
5 5
|
|
# i j n 1
|
|
1 1 0 0 -1 # 1<=i
|
|
1 -1 0 1 0 # i<=n
|
|
1 0 1 0 -1 # 1<=j
|
|
1 1 -1 0 -1 # j<=i-1
|
|
1 0 -1 0 0 # j<=0
|
|
0 0 0 # 3 zeroes !
|
|
|
|
# Polyhedron #3
|
|
1
|
|
# {i | 1<=i<=n; i=1}
|
|
3 4
|
|
# i n 1
|
|
1 1 0 -1 # 1<=i
|
|
1 -1 1 0 # i<=n
|
|
0 1 0 -1 # i=1
|
|
0 0 0 # 3 zeroes !
|
|
|
|
# Polyhedron #4
|
|
2
|
|
# {i | 1<=i<=n; i!=1}
|
|
3 4
|
|
# i n 1
|
|
1 1 0 -1 # 1<=i
|
|
1 -1 1 0 # i<=n
|
|
1 1 0 -2 # i>=2
|
|
3 4
|
|
# i n 1
|
|
1 1 0 -1 # 1<=i
|
|
1 -1 1 0 # i<=n
|
|
1 -1 0 0 # i<=0
|
|
0 0 0 # 3 zeroes !
|
|
|
|
# Polyhedron #5
|
|
1
|
|
# {i, j | 1<=i<=n; i+1<=j<=n; 1<=k<=i-1; k=1}
|
|
7 6
|
|
# i j k n 1
|
|
1 1 0 0 0 -1 # 1<=i
|
|
1 -1 0 0 1 0 # i<=n
|
|
1 -1 1 0 0 -1 # i+1<=j
|
|
1 0 -1 0 1 0 # j<=n
|
|
1 0 0 1 0 -1 # 1<=k
|
|
1 1 0 -1 0 -1 # k<=i-1
|
|
0 0 0 1 0 -1 # k=1
|
|
0 0 0 # 3 zeroes !
|
|
|
|
# Polyhedron #6
|
|
2
|
|
# {i, j | 1<=i<=n; i+1<=j<=n; 1<=k<=i-1; k!=1}
|
|
7 6
|
|
# i j k n 1
|
|
1 1 0 0 0 -1 # 1<=i
|
|
1 -1 0 0 1 0 # i<=n
|
|
1 -1 1 0 0 -1 # i+1<=j
|
|
1 0 -1 0 1 0 # j<=n
|
|
1 0 0 1 0 -1 # 1<=k
|
|
1 1 0 -1 0 -1 # k<=i-1
|
|
1 0 0 1 0 -2 # k>=2
|
|
7 6
|
|
# i j k n 1
|
|
1 1 0 0 0 -1 # 1<=i
|
|
1 -1 0 0 1 0 # i<=n
|
|
1 -1 1 0 0 -1 # i+1<=j
|
|
1 0 -1 0 1 0 # j<=n
|
|
1 0 0 1 0 -1 # 1<=k
|
|
1 1 0 -1 0 -1 # k<=i-1
|
|
1 0 0 -1 0 0 # k<=0
|
|
0 0 0 # 3 zeroes !
|
|
|
|
# Polyhedron #7
|
|
1
|
|
# {i, j | 1<=i<=n; i+1<=j<=n; i=1}
|
|
5 5
|
|
# i j n 1
|
|
1 1 0 0 -1 # 1<=i
|
|
1 -1 0 1 0 # i<=n
|
|
1 -1 1 0 -1 # i+1<=j
|
|
1 0 -1 1 0 # j<=n
|
|
0 1 0 0 -1 # i=1
|
|
0 0 0 # 3 zeroes !
|
|
|
|
# Polyhedron #8
|
|
2
|
|
# {i, j | 1<=i<=n; i+1<=j<=n; i!=1}
|
|
5 5
|
|
# i j n 1
|
|
1 1 0 0 -1 # 1<=i
|
|
1 -1 0 1 0 # i<=n
|
|
1 -1 1 0 -1 # i+1<=j
|
|
1 0 -1 1 0 # j<=n
|
|
1 1 0 0 -2 # i>=2
|
|
5 5
|
|
# i j n 1
|
|
1 1 0 0 -1 # 1<=i
|
|
1 -1 0 1 0 # i<=n
|
|
1 -1 1 0 -1 # i+1<=j
|
|
1 0 -1 1 0 # j<=n
|
|
1 -1 0 0 0 # i<=0
|
|
0 0 0 # 3 zeroes !
|
|
|
|
# 6. We let CLooG choose the iterator names
|
|
0
|
|
|
|
#----------------------------------SCATTERING-----------------------------------
|
|
|
|
# 7. Scattering functions ALLOCATION + ORIGINAL SCHEDULING
|
|
8
|
|
|
|
# Scattering function for polyhedron #1: T_S1(i,j) =(i+j-1,i,0,j,0,0,0)
|
|
7 12
|
|
# p c1 c2 c3 c4 c5 c6 i j n 1
|
|
0 1 0 0 0 0 0 0 -1 -1 0 1 # ins1: i+j-1
|
|
0 0 1 0 0 0 0 0 -1 0 0 0 # i
|
|
0 0 0 1 0 0 0 0 0 0 0 0 # 0
|
|
0 0 0 0 1 0 0 0 0 -1 0 0 # j
|
|
0 0 0 0 0 1 0 0 0 0 0 0 # 0
|
|
0 0 0 0 0 0 1 0 0 0 0 0 # 0
|
|
0 0 0 0 0 0 0 1 0 0 0 0 # 0
|
|
|
|
# Scattering function for polyhedron #2: T_S2(i,j) =(i,i,0,j,1,0,0)
|
|
7 12
|
|
# p c1 c2 c3 c4 c5 c6 i j n 1
|
|
0 1 0 0 0 0 0 0 -1 0 0 0 # ins2: i
|
|
0 0 1 0 0 0 0 0 -1 0 0 0 # i
|
|
0 0 0 1 0 0 0 0 0 0 0 0 # 0
|
|
0 0 0 0 1 0 0 0 0 -1 0 0 # j
|
|
0 0 0 0 0 1 0 0 0 0 0 -1 # 1
|
|
0 0 0 0 0 0 1 0 0 0 0 0 # 0
|
|
0 0 0 0 0 0 0 1 0 0 0 0 # 0
|
|
|
|
# Scattering function for polyhedron #3: T_S3(i) =(i-1,i,1,0,0,0,0)
|
|
7 11
|
|
# p c1 c2 c3 c4 c5 c6 i n 1
|
|
0 1 0 0 0 0 0 0 -1 0 1 # ins3: i-1
|
|
0 0 1 0 0 0 0 0 -1 0 0 # i
|
|
0 0 0 1 0 0 0 0 0 0 -1 # 1
|
|
0 0 0 0 1 0 0 0 0 0 0 # 0
|
|
0 0 0 0 0 1 0 0 0 0 0 # 0
|
|
0 0 0 0 0 0 1 0 0 0 0 # 0
|
|
0 0 0 0 0 0 0 1 0 0 0 # 0
|
|
|
|
# Scattering function for polyhedron #4: T_S4(i) =(0,i,2,0,0,0,0)
|
|
7 11
|
|
# p c1 c2 c3 c4 c5 c6 i n 1
|
|
0 1 0 0 0 0 0 0 0 0 0 # ins4: 0
|
|
0 0 1 0 0 0 0 0 -1 0 0 # i
|
|
0 0 0 1 0 0 0 0 0 0 -2 # 2
|
|
0 0 0 0 1 0 0 0 0 0 0 # 0
|
|
0 0 0 0 0 1 0 0 0 0 0 # 0
|
|
0 0 0 0 0 0 1 0 0 0 0 # 0
|
|
0 0 0 0 0 0 0 1 0 0 0 # 0
|
|
|
|
# Scattering function for polyhedron #5: T_S5(i,j,k)=(j+k-1,i,3,j,0,k,0)
|
|
7 13
|
|
# p c1 c2 c3 c4 c5 c6 i j k n 1
|
|
0 1 0 0 0 0 0 0 0 -1 -1 0 1 # ins 5: j+k-1
|
|
0 0 1 0 0 0 0 0 -1 0 0 0 0 # i
|
|
0 0 0 1 0 0 0 0 0 0 0 0 -3 # 3
|
|
0 0 0 0 1 0 0 0 0 -1 0 0 0 # j
|
|
0 0 0 0 0 1 0 0 0 0 0 0 0 # 0
|
|
0 0 0 0 0 0 1 0 0 0 -1 0 0 # k
|
|
0 0 0 0 0 0 0 1 0 0 0 0 0 # 0
|
|
|
|
# Scattering function for polyhedron #6: T_S6(i,j,k)=(k,i,3,j,0,k,1)
|
|
7 13
|
|
# p c1 c2 c3 c4 c5 c6 i j k n 1
|
|
0 1 0 0 0 0 0 0 0 0 -1 0 0 # ins 6: k
|
|
0 0 1 0 0 0 0 0 -1 0 0 0 0 # i
|
|
0 0 0 1 0 0 0 0 0 0 0 0 -3 # 3
|
|
0 0 0 0 1 0 0 0 0 -1 0 0 0 # j
|
|
0 0 0 0 0 1 0 0 0 0 0 0 0 # 0
|
|
0 0 0 0 0 0 1 0 0 0 -1 0 0 # k
|
|
0 0 0 0 0 0 0 1 0 0 0 0 -1 # 1
|
|
|
|
# Scattering function for polyhedron #7: T_S7(i,j) =(i+j,i,3,j,1,0,0)
|
|
7 12
|
|
# p c1 c2 c3 c4 c5 c6 i j n 1
|
|
0 1 0 0 0 0 0 0 -1 -1 0 0 # ins 7: i+j
|
|
0 0 1 0 0 0 0 0 -1 0 0 0 # i
|
|
0 0 0 1 0 0 0 0 0 0 0 -3 # 3
|
|
0 0 0 0 1 0 0 0 0 -1 0 0 # j
|
|
0 0 0 0 0 1 0 0 0 0 0 -1 # 1
|
|
0 0 0 0 0 0 1 0 0 0 0 0 # 0
|
|
0 0 0 0 0 0 0 1 0 0 0 0 # 0
|
|
|
|
# Scattering function for polyhedron #8: T_S8(i,j) =(j,i,3,j,2,0,0)
|
|
7 12
|
|
# p c1 c2 c3 c4 c5 c6 i j n 1
|
|
0 1 0 0 0 0 0 0 0 -1 0 0 # ins 8: j
|
|
0 0 1 0 0 0 0 0 -1 0 0 0 # i
|
|
0 0 0 1 0 0 0 0 0 0 0 -3 # 3
|
|
0 0 0 0 1 0 0 0 0 -1 0 0 # j
|
|
0 0 0 0 0 1 0 0 0 0 0 -2 # 2
|
|
0 0 0 0 0 0 1 0 0 0 0 0 # 0
|
|
0 0 0 0 0 0 0 1 0 0 0 0 # 0
|
|
|
|
# We want to set manually the scattering dimension names.
|
|
1
|
|
p c1 c2 c3 c4 c5 c6
|