The Loop Table listing (/listoptions=l
) includes an
entry for each loop indicating whether it was optimized, or why
it was not. This section lists the possible messages and gives a
brief explanation for each. The two most common reasons for a loop
to be left serial are that the iterations were not independent (the
listing should give a Data Dependence message) and that the loop
contained I/O statements.
- Bad intrinsic call - Code rearrangement by KAP may
give unpredictable results.
- Bad operator - Code rearrangement by KAP may give
unpredictable results.
- Branches out of/into loop - Code may be iteration-
order dependent.
- CALL with alternate returns - Program flow too
uncertain.
- IO statements in loop - Input/Output assumed order-
dependent.
- Cannot allocate temporary array - Usually, a Data
Dependence could have been lifted by expanding a scalar into an
array, but there was a name conflict.
- Distributed - Loop divided into smaller loops, some
of which may be otherwise optimized.
- DO statement not optimizable - For example,
iteration count of a DO WHILE loop is not known.
- Fused with other loops - Adjacent loops joined into
a larger loop to reduce overhead.
- GOTO in loop - Possible flow patterns too
complicated for KAP.
- Left as DO loop - Usually, a Data Dependence
prevented optimization.
- Left as a serial loop - Usually, too much
synchronization required.
- Nested IFs - The branching pattern was too
complicated.
- No optimizable statements - For example, no
arithmetic in loop.
- Not enough work - Optimization overhead greater
than expected gain.
- Optimization disabled - By a directive or
assertion.
- Scalar directive - A directive or assertion turned
off optimization.
- Scalar mode preferable - Usually, too much
synchronization needed.
- Too many inner loops: LIMIT > integer - VERY
complicated loop nest; KAP will try to optimize inner loops.
- Too many stmts/DD arcs - VERY complicated loop
nest; try increasing
/arclimit
.
- Unoptimizable call - SUBROUTINE or FUNCTION with
unknown side effects.
- Unoptimizable intrinsic call - Unknown side
effects.
- Unoptimizable operation - For example, character
string manipulation.
- Unoptimizable statements in loop - Usually I/O.
- Unoptimizable symbol use - Variable used in a
complicated way, such as with COMMON or EQUIVALENCE.
- Unoptimizable variable or operation type - Only
numerical work is easily optimized by KAP Fortran for OpenVMS
ALPHA.
- Unrolled - Loop would run more efficiently than
rolled up (see explanations in Chapter 4
and Chapter 8).
Previous Page | Next Page | Contents | Index |
Command-Line Qualifiers