aboutsummaryrefslogtreecommitdiff
path: root/src/main.F90
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.F90')
-rw-r--r--src/main.F9020
1 files changed, 15 insertions, 5 deletions
diff --git a/src/main.F90 b/src/main.F90
index f28bbb8..7c03462 100644
--- a/src/main.F90
+++ b/src/main.F90
@@ -3,6 +3,7 @@ PROGRAM mul
USE bettmat
USE dotmat
USE bettmat2
+ USE blockmat
USE iso_fortran_env, only: error_unit
IMPLICIT none
@@ -38,6 +39,8 @@ PROGRAM mul
multype = 4
ELSE IF (trim(impl_arg) .eq. "bett2") THEN
multype = 5
+ ELSE IF (trim(impl_arg) .eq. "block") THEN
+ multype = 6
ELSE
write (error_unit, '(A)') "Unrecognized implementation argument"
call print_usage()
@@ -73,7 +76,8 @@ CONTAINS
write (*, '(A)') &
"Usage: mull KIND IMPLEMENTATION" // char(10) // &
"where KIND is one of: 4, 8, 16" // char(10) // &
- " IMPLEMENTATION is one of: naiv, bett, dot, mat"
+ " IMPLEMENTATION is one of: " // &
+ "naiv, bett, dot, mat, bett2, block"
END SUBROUTINE print_usage
@@ -113,8 +117,10 @@ CONTAINS
res = dotmull(mat1, mat2)
CASE (4)
res = matmul(mat1, mat2)
- CASE default
+ CASE (5)
res = bett2mull(mat1, mat2)
+ CASE default
+ res = blockmull(mat1, mat2)
END SELECT
@@ -150,8 +156,10 @@ CONTAINS
res = dotmull(mat1, mat2)
CASE (4)
res = matmul(mat1, mat2)
- CASE default
+ CASE (5)
res = bett2mull(mat1, mat2)
+ CASE default
+ res = blockmull(mat1, mat2)
END SELECT
@@ -187,13 +195,15 @@ CONTAINS
res = dotmull(mat1, mat2)
CASE (4)
res = matmul(mat1, mat2)
- CASE default
+ CASE (5)
res = bett2mull(mat1, mat2)
+ CASE default
+ res = blockmull(mat1, mat2)
END SELECT
call cpu_time(end)
-
+
time = end - start
END FUNCTION measure_16