summaryrefslogtreecommitdiff
path: root/examples/fortran
diff options
context:
space:
mode:
Diffstat (limited to 'examples/fortran')
-rw-r--r--examples/fortran/README10
-rw-r--r--examples/fortran/ccd.f32
-rw-r--r--examples/fortran/ccd.script18
-rw-r--r--examples/fortran/gemm.f9058
-rw-r--r--examples/fortran/gemm.script30
-rw-r--r--examples/fortran/rose_gemm.f90155
6 files changed, 0 insertions, 303 deletions
diff --git a/examples/fortran/README b/examples/fortran/README
deleted file mode 100644
index 4f23bee..0000000
--- a/examples/fortran/README
+++ /dev/null
@@ -1,10 +0,0 @@
-// Manu
-
-1) Fortran support added to permute, tile, unroll and datacopy. Tested these w.r.t gemm.c using gemm.script.
- There might be other issues (like fusion due to unroll, ...) that have not been tested.
-
-2) To incorporate Fortran support I had to modify certain values in omega (include/omega/omega_core/oc.h).
- To solve for large number of unknowns, these values have to be reverted back.
-
-3) Tested the existing chill scripts using Derick's python script.
- At least the existing chill scripts are not affected by the fortran related changes.
diff --git a/examples/fortran/ccd.f b/examples/fortran/ccd.f
deleted file mode 100644
index 12d834d..0000000
--- a/examples/fortran/ccd.f
+++ /dev/null
@@ -1,32 +0,0 @@
-c
-c These have been separated out from ccsd_t_singles_l.F and ccsd_t_doubles_l.F
-c
- subroutine clean_sd_t_s1_1(h3d,h2d,h1d,p6d,p5d,p4d,
- 2 triplesx,t1sub,v2sub)
- IMPLICIT NONE
- integer h3d,h2d,h1d,p6d,p5d,p4d
- integer h3,h2,h1,p6,p5,p4
- integer N
- double precision triplesx(16,16,16,16,16,16)
- double precision t1sub(16,16)
- double precision v2sub(16,16,16,16)
-
- N = 16
-
- do p4=1,10
- do p5=1,10
- do p6=1,10
- do h1=1,10
- do h2=1,10
- do h3=1,10
- triplesx(h3,h2,h1,p6,p5,p4)=triplesx(h3,h2,h1,p6,p5,p4)
- 1 + t1sub(p4,h1)*v2sub(h3,h2,p6,p5)
- enddo
- enddo
- enddo
- enddo
- enddo
- enddo
- return
- end
-
diff --git a/examples/fortran/ccd.script b/examples/fortran/ccd.script
deleted file mode 100644
index c2af500..0000000
--- a/examples/fortran/ccd.script
+++ /dev/null
@@ -1,18 +0,0 @@
-source: ccd.f
-procedure: clean_sd_t_s1_1
-format : rose
-loop: 0
-
-
-
-original()
-
-UN=4
-
-unroll(0,5,4)
-unroll(0,4,4)
-unroll(0,3,4)
-unroll(0,2,4)
-unroll(0,1,4)
-
-print
diff --git a/examples/fortran/gemm.f90 b/examples/fortran/gemm.f90
deleted file mode 100644
index b65bb58..0000000
--- a/examples/fortran/gemm.f90
+++ /dev/null
@@ -1,58 +0,0 @@
-program matmul
-
- integer N,i,j,k
- real*8 a(10,10), b(10,10), c(10,10), ct(10,10),mysum
-
- do i=1,10,1
- do j=1,10,1
- a(i,j) = i+j
- b(i,j) = i-j
- c(i,j) = 0.0
- ct(i,j) = 0.0
- end do
- b(i,i) = 1.0;
- end do
-
-
- DO j=1,10,1
- DO k=1,10,1
- DO i=1,10,1
- c(i,j) = c(i,j)+a(i,k)*b(k,j)
- end do
- end do
- end do
-
-
-
- call gemm(10,a,b,ct)
-
- mysum = 0.0
- do i=1,10,1
- do j=1,10,1
- mysum = c(i,j) - ct(i,j)
- end do
- end do
-
- if (abs(mysum) >= 0.00001) then
- write (*,*) "Something wrong"
- else
- write (*,*) "Output matches"
- end if
-
-end program matmul
-
- SUBROUTINE gemm(N,A,B,C)
- INTEGER N
- REAL*8 A(N,N), B(N,N), C(N,N)
-
- INTEGER I,J,K
-
- DO J=1,N,1
- DO K=1,N,1
- DO I=1,N,1
- C(I,J) = C(I,J)+A(I,K)*B(K,J)
- end do
- end do
- end do
-
- END subroutine
diff --git a/examples/fortran/gemm.script b/examples/fortran/gemm.script
deleted file mode 100644
index 01eb859..0000000
--- a/examples/fortran/gemm.script
+++ /dev/null
@@ -1,30 +0,0 @@
-#matrix multiply large array size for intel machine
-source: gemm.f90
-procedure: gemm
-format: rose
-loop: 0
-
-TI = 128
-#TI = 4
-TJ = 8
-#TK = 3
-TK = 512
-UI = 2
-UJ = 2
-
-permute([3,1,2])
-tile(0,2,TJ)
-#print space
-tile(0,2,TI)
-#print space
-tile(0,5,TK)
-#print space
-
-
-datacopy(0,3,A,false,-1)
-#print space
-
-datacopy(0,4,B)
-unroll(0,4,UI)
-unroll(0,5,UJ)
-
diff --git a/examples/fortran/rose_gemm.f90 b/examples/fortran/rose_gemm.f90
deleted file mode 100644
index d150922..0000000
--- a/examples/fortran/rose_gemm.f90
+++ /dev/null
@@ -1,155 +0,0 @@
-PROGRAM matmul
-INTEGER :: N, i, j, k
-REAL(kind=8) :: a(10,10), b(10,10), c(10,10), ct(10,10), mysum
-DO i = 1, 10, 1
-DO j = 1, 10, 1
-a(i,j) = i + j
-b(i,j) = i - j
-c(i,j) = 0.0
-ct(i,j) = 0.0
-END DO
-b(i,i) = 1.0
-END DO
-DO j = 1, 10, 1
-DO k = 1, 10, 1
-DO i = 1, 10, 1
-c(i,j) = c(i,j) + a(i,k) * b(k,j)
-END DO
-END DO
-END DO
-CALL gemm(10,a,b,ct)
-mysum = 0.0
-DO i = 1, 10, 1
-DO j = 1, 10, 1
-mysum = c(i,j) - ct(i,j)
-END DO
-END DO
-IF (abs(mysum) >= 0.00001) THEN
-WRITE (*, FMT=*) "Something wrong"
-ELSE
-WRITE (*, FMT=*) "Output matches"
-END IF
-END PROGRAM matmul
-
-SUBROUTINE gemm(N,A,B,C)
-INTEGER :: t12
-INTEGER :: t10
-INTEGER :: t8
-INTEGER :: t6
-INTEGER :: t4
-INTEGER :: t2
-INTEGER :: chill_t64
-INTEGER :: chill_t63
-INTEGER :: chill_t62
-INTEGER :: chill_t61
-INTEGER :: chill_t60
-INTEGER :: chill_t59
-INTEGER :: chill_t58
-INTEGER :: chill_t57
-INTEGER :: chill_t56
-INTEGER :: chill_t55
-INTEGER :: chill_t54
-INTEGER :: chill_t53
-INTEGER :: chill_t52
-INTEGER :: chill_t51
-INTEGER :: chill_t50
-INTEGER :: chill_t49
-INTEGER :: chill_t48
-INTEGER :: chill_t47
-INTEGER :: over2
-INTEGER :: chill_t46
-INTEGER :: chill_t45
-INTEGER :: chill_t44
-INTEGER :: chill_t43
-INTEGER :: chill_t42
-INTEGER :: chill_t41
-INTEGER :: chill_t40
-INTEGER :: chill_t39
-INTEGER :: chill_t38
-INTEGER :: chill_t37
-INTEGER :: chill_t36
-INTEGER :: chill_t35
-INTEGER :: chill_t34
-INTEGER :: chill_t33
-INTEGER :: chill_t32
-INTEGER :: chill_t31
-INTEGER :: chill_t30
-INTEGER :: chill_t29
-INTEGER :: chill_t28
-INTEGER :: chill_t27
-INTEGER :: chill_t26
-INTEGER :: chill_t25
-INTEGER :: chill_t24
-INTEGER :: chill_t23
-INTEGER :: over1
-INTEGER :: chill_t22
-INTEGER :: chill_t21
-INTEGER :: chill_t20
-INTEGER :: chill_t19
-INTEGER :: chill_t18
-INTEGER :: chill_t17
-INTEGER :: chill_t16
-INTEGER :: chill_t15
-REAL(kind=8), DIMENSION(8,512) :: f_P2
-INTEGER :: chill_t14
-INTEGER :: chill_t13
-INTEGER :: chill_t12
-INTEGER :: chill_t11
-INTEGER :: chill_t10
-INTEGER :: chill_t9
-INTEGER :: chill_t8
-INTEGER :: chill_t7
-REAL(kind=8), DIMENSION(512,128) :: f_P1
-INTEGER :: chill_t1
-INTEGER :: chill_t2
-INTEGER :: chill_t4
-INTEGER :: chill_t6
-INTEGER :: chill_t5
-INTEGER :: N
-REAL(kind=8) :: A(N,N), B(N,N), C(N,N)
-INTEGER :: I, J, K
-over1 = 0
-over2 = 0
-DO t2 = 1, N, 512
-DO t4 = 1, N, 128
-DO t6 = t2, merge(N,t2 + 511,N <= t2 + 511), 1
-DO t8 = t4, merge(t4 + 127,N,t4 + 127 <= N), 1
-f_P1(t8 - t4 + 1,t6 - t2 + 1) = A(t8,t6)
-END DO
-END DO
-DO t6 = 1, N, 8
-DO t8 = t6, merge(N,t6 + 7,N <= t6 + 7), 1
-DO t10 = t2, merge(N,t2 + 511,N <= t2 + 511), 1
-f_P2(t10 - t2 + 1,t8 - t6 + 1) = B(t10,t8)
-END DO
-END DO
-over1 = MOD(N,2)
-DO t8 = t4, merge(-over1 + N,t4 + 126,-over1 + N <= t4 + 126), 2
-over2 = MOD(N,2)
-DO t10 = t6, merge(t6 + 6,N - over2,t6 + 6 <= N - over2), 2
-DO t12 = t2, merge(t2 + 511,N,t2 + 511 <= N), 1
-C(t8,t10) = C(t8,t10) + f_P1(t8 - t4 + 1,t12 - t2 + 1) * f_P2(t12 - t2 + 1,t10 - t6 + 1)
-C(t8 + 1,t10) = C(t8 + 1,t10) + f_P1(t8 + 1 - t4 + 1,t12 - t2 + 1) * f_P2(t12 - t2 + 1,t10 - t6 + 1)
-C(t8,t10 + 1) = C(t8,t10 + 1) + f_P1(t8 - t4 + 1,t12 - t2 + 1) * f_P2(t12 - t2 + 1,t10 + 1 - t6 + 1)
-C(t8 + 1,t10 + 1) = C(t8 + 1,t10 + 1) + f_P1(t8 + 1 - t4 + 1,t12 - t2 + 1) * f_P2(t12 - t2 + 1,t10 + 1 - t6 + 1)
-END DO
-END DO
-IF (N - 7 <= t6 .AND. 1 <= over2) THEN
-DO t12 = t2, merge(N,t2 + 511,N <= t2 + 511), 1
-C(t8,N) = C(t8,N) + f_P1(t8 - t4 + 1,t12 - t2 + 1) * f_P2(t12 - t2 + 1,N - t6 + 1)
-C(t8 + 1,N) = C(t8 + 1,N) + f_P1(t8 + 1 - t4 + 1,t12 - t2 + 1) * f_P2(t12 - t2 + 1,N - t6 + 1)
-END DO
-END IF
-END DO
-IF (N - 127 <= t4 .AND. 1 <= over1) THEN
-DO t10 = t6, merge(t6 + 7,N,t6 + 7 <= N), 1
-DO t12 = t2, merge(t2 + 511,N,t2 + 511 <= N), 1
-C(N,t10) = C(N,t10) + f_P1(N - t4 + 1,t12 - t2 + 1) * f_P2(t12 - t2 + 1,t10 - t6 + 1)
-END DO
-END DO
-END IF
-END DO
-END DO
-END DO
-END SUBROUTINE
-