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.