The following example shows the annotated transformed program in
the listing file. Much of this information is always recorded in
the transformed code file regardless of whether the user specifies
/listoptions=t .
KAP/Digital_VMS_F V3.1 k271625 970317 ATIMESB Transformed 05-Apr-1997 13:22:10
Page 1
Footnotes Actions DO Line
Loops
1
2 C Simple Matrix Multiply example.
3
4 PROGRAM ATIMESB
5
6 PARAMETER M = 200, N = 300, P = 200
7
8 DIMENSION A(1:200,1:300), B(1:300,1:200), C(1:200,1:200)
I 8 INTEGER II2, II1
I 8 PARAMETER (II2 = 300, II1 = 200)
9
10
11 C Initialize the matrices
12
1 LM +------13 DO 2 J=1,300
2 LM INF !+-----14 DO 2 I=1,200
!! 15 A(I,J) = 1.5
I !!_____16 2 CONTINUE
17
1 LM +------18 DO 3 J=1,200
2 LM INF !+-----19 DO 3 I=1,300
!! 20 B(I,J) = 3.0
I !!_____21 3 CONTINUE
22
23 C Compute C = A * B
24
SO 25 CALL MATMUL (A,(II1),B,(II2),C,(II1))
26 END
Abbreviations Used
LM label modification
SO scalar optimization
I inserted
INF informational
Footnote List
1: not vectorized Not an inner loop.
2: informational Unrolling of this loop was not done because heuristic
says size is ok as is.
KAP/Digital_VMS_F V3.1 k271625 970317 MATMUL Transformed 05-Apr-1997 13:22:10
Footnotes Actions DO Loops Line
27
28
29 SUBROUTINE MATMUL (A, LDA, B, LDB, C, LL )
30 REAL A(LDA,LDB), B(LDB,LL), C(LDA,LL)
31 INTEGER LDA, LDB, LL
I 31 INTEGER II17, II16
I 31 PARAMETER (II17 = 25, II16 = 1)
I INTEGER II1,II2,II3,II4,II5,II6,II7,II8
X ,II9,II10,II11, II12,II13,II14,II15
I REAL RR1
I 33 II1 = MOD (LL - II16, II17) + II16
I 36 II5 = MOD (LDB - II16, II17) + II16
I 34 II9 = MOD (LDA - II16, II17) + II16
32
1 LM +---------33 DO 2 J=1,LL
2 LM INF !+--------34 DO 2 I=1,LDA
!! 35 C(I,J) = 0.
I !!________38 2 CONTINUE
I 33 II3 = II16
I 33 II2 = II1
3 4 5 I NO SO +---------33 DO 7 II4=II16,LL,II17
I ! 36 II7 = II16
I ! 36 II6 = II5
I ! 36 II15 = II3 + II2 - II16
3 4 5 I NO SO !+--------36 DO 6 II8=II16,LDB,II17
I !! 34 II11 = II16
I !! 34 II10 = II9
I !! 34 II13 = II7 + II6 - II16
3 4 5 I NO SO !!+-------34 DO 5 II12=II16,LDA,II17
!!! 32
I !!! 33 II14 = II11 + II10 - II16
6 LM SO !!!+------33 DO 4 J=II3,II15,II16
6 LM LR SO !!!!+-----34 DO 4 I=II11,II14,II16
I !!!!! 34 RR1 = C(I,J)
2 6 LM LR SO INF!!!!!+----36 DO 3 K=II7,II13,II16
7 !!!!!! 37 RR1 = RR1+(A(I,K) * B(K,J))
I !!!!!!____38 3 CONTINUE
I !!!!! 38 C(I,J) = RR1
I !!!!!_____38 4 CONTINUE
I !!! 38 II11 = II11 + II10
I !!! 38 II10 = II17
I !!!_______38 5 CONTINUE
I !! 38 II7 = II7 + II6
I !! 38 II6 = II17
I !!________38 6 CONTINUE
I ! 38 II3 = II3 + II2
I ! 38 II2 = II17
I !_________38 7 CONTINUE
39
40 RETURN
41
42 END
Abbreviations Used
LM label modification
NO not optimized
LR loop reordering
SO scalar optimization
I inserted
INF informational
Footnote List
1: not vectorized Not an inner loop.
2: informational Unrolling of this loop was not done because
heuristic says size is ok as is.
3: inserted DO loop was inserted here.
4: scalar optimization Block loop for strip mining with block size 25.
5: not optimized Loop was asserted serial by directive.
6: scalar optimization Strip loop for strip mining with block size 25.
7: data dependence Data dependence involving this line due to variable C.