4.5.13 /interleave, /intl, (/interleave)

The /interleave qualifier controls loop unrolling and rescheduling by turning on interleaved unrolling. Interleaved unrolling can help the compiler recognize quad-word loads and stores, which are more efficient than ordinary loads and stores. It does this by first unrolling the loop as in ordinary loop unrolling. Second, the statements in the loop are interchanged where possible to make references to the same array adjacent to each other.

The following example demonstrates interleaved unrolling:

REAL A(100),B(100)

  DO I = 1, 100
     A(i) = 99.
     B(i) = 100.
  ENDDO

  PRINT *,a,b
  END

The output from KAP with interleaved unrolling turned on is as follows:

REAL A(100), B(100)

DO   I=1,97,4
     A(I) = 99.
     A(I+1) = 99.
     A(I+2) = 99.
     A(I+3) = 99.
     B(I) = 100.
     B(I+1) = 100.
     B(I+2) = 100.
     B(I+3) = 100.
ENDDO

 PRINT *, A, B
 END

The default value is /interleave .


Previous Page | Next Page | Contents | Index |
Command-Line Qualifiers