File: matmul_15.f90

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (34 lines) | stat: -rw-r--r-- 846 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
! { dg-do  run }
! { dg-options "-finline-matmul-limit=0" }
! Stress-test the matmul blocking code with sizes close to or
! equal to powers ot two.

program main
  implicit none
  integer, dimension(*), parameter :: nn = &
       & [2,3,4,5, 7,8,9, 15,16,17, 31,32,33, 63,64,65, &
       127 ,228,129,  255,256,257];
  integer, parameter :: s = size(nn)
  real, dimension(:,:),allocatable :: a, b, c
  integer :: i1, i2, i3
  integer :: nx, ny, count
  real :: sm

  sm = 0.0
  do i1=1, s
     nx = nn(i1)
     do i2=1,s
        ny = nn(i2)
        do i3=1,s
           count = nn(i3)
           allocate (a(nx,ny), b(ny,count), c(nx,count))
           call random_number(a)
           call random_number(b)
           c = matmul(a,b)
           sm = sm + sum(c)
           deallocate(a,b,c)
        end do
     end do
  end do

end program main