diff options
author | dhuth <derickhuth@gmail.com> | 2014-08-27 09:52:06 -0600 |
---|---|---|
committer | dhuth <derickhuth@gmail.com> | 2014-08-27 09:52:06 -0600 |
commit | bff810cc371a38f493d688c54f71013f5a7d53bf (patch) | |
tree | fbe86954bb3c01deb21da9e41ebff5baa2889a45 /examples/fortran/gemm.f90 | |
download | chill-bff810cc371a38f493d688c54f71013f5a7d53bf.tar.gz chill-bff810cc371a38f493d688c54f71013f5a7d53bf.tar.bz2 chill-bff810cc371a38f493d688c54f71013f5a7d53bf.zip |
Initial commit
Diffstat (limited to 'examples/fortran/gemm.f90')
-rw-r--r-- | examples/fortran/gemm.f90 | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/examples/fortran/gemm.f90 b/examples/fortran/gemm.f90 new file mode 100644 index 0000000..b65bb58 --- /dev/null +++ b/examples/fortran/gemm.f90 @@ -0,0 +1,58 @@ +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 |