KAP Fortran for OpenVMS Alpha
Quick Reference

April 1997

This document lists KAP Fortran for OpenVMS Alpha command-line options.

For more information about these options, see the KAP Fortran for OpenVMS Alpha User Guide.

Revision /Update Information This is a revised document.

Operating System and Version: OpenVMS Alpha, Version 7.1

Software Version: KAP Fortran, Version 3.1

Digital Equipment Corporation
Maynard, Massachusetts
_____________________________________________________________________

First Printing, 1993

Revised, April 1997

Possession, use, or copying of the software described in this publication is authorized only pursuant to a valid written license from Digital or an authorized sublicensor.

Digital Equipment Corporation makes no representations that the use of its products in the manner described in this publication will not infringe on existing or future patent rights, nor do the descriptions contained in this publication imply the granting of licenses to make, use, or sell equipment or software in accordance with the description. © Digital Equipment Corporation 1993, 1996, 1997. All rights reserved. © Kuck & Associates, Inc. 1993, 1996, 1997. All rights reserved.

The following are trademarks of Digital Equipment Corporation: AlphaGeneration, Digital Fortran, Digital, OpenVMS, VAX DOCUMENT, and the DIGITAL logo.

KAP is a trademark of Kuck & Associates, Inc.

All other trademarks and registered trademarks are the property of their respective holders.

This document is available on CD-ROM.

This document was produced using SDMLWEB. 1

Table 1 KAP Command-Line Options

Long Name  Short Name  Default Value 
General Optimization     
[no]interchange  interchange  interchange 
[no]namepartitioning= <integer>,<integer>  [n]namepart= <integer>,<integer>  nonamepart 
optimize=<integer>  o=<integer>  o=5 
roundoff=<integer>  r=<integer>  r=3 
routine=<routine_name> /<limited qualifiers>  rt=<routine_name> /<limited qualifiers>  off 
scalaropt=<integer>  so=<integer>  so=3 
[no]skip  [n]sk  nosk 
tune=<architecture>  tune= <architecture>  tune= <architecture> 
Parallel Processing     
[no]concurrentize  [n]conc  noconc 
minconcurrent=<integer>  mc  mc=1000 
[no]parallelio  [n]pio  nopio 
Fortran Language     
assume=<list>  a=<list>  a=cel 
noassume  na   
[no]case  [n]case  ncase 
[no]datasave  [n]ds  ds 
[no]dlines  [n]dl  ndl 
[no]escape    escape 
integer=<integer>  int=<integer>  int=4 
[no]intlog  [n]intl  intlog 
logical=<integer>  log=<integer>  log=4 
[no]natural    see User Guide 
[no]onetrip  [n]1  n1 
real=<integer>  rl=<integer>  real=4 
[no]recursion  [n]rc  nrc 
save=<list>  sv=<list>  sv=manual_adjust 
scan=<integer>  scan=<integer>  scan=72 
syntax=<list>  sy=<list>  off 
[no]type  [n]ty  ntype 
Directives     
directives=<list>  dr=<list>  dr=ak 
nodirectives=<list>  ndr   
[no]ignoreoptions  [n]ig  nig 
Inlining and IPA     
inline[=<names>]  inl[=<names>]  off 
noinline[=<names>]  ninl[=<names>]  off 
ipa[=<names>]  ipa[=<names>]  off 
noipa[=<names>]  nipa[=<names>]  off 
inline_and_copy=<names>  inlc=<names>  off 
inline_create=<file>  incr=<file>  off 
ipa_create=<file>  ipacr=<file>  off 
inline_depth=<file>  ind=<file>  ind=2 
inline_from_files=<file>,<file>  inff=<file>,<file>  current source file 
ipa_from_files=<file>,<file>  ipaff=<file>,<file>  current source file 
inline_from_libraries= <library>,<library>  infl=<library>, <library>  off 
ipa_from_ libraries= <library>,<library>  ipafl=<library>, <library>  off 
inline_ looplevel=<integer>  inll=<integer>  inll=2 
ipa_ looplevel=<integer>  ipall=<integer>  ipall=2 
inline_manual  inm  off 
ipa_ manual  ipam  off 
inline_optimize=<integer>    inline_optimize=0 
ipa_ optimize=<integer>    ipa_ optimize=0 
Input-Output     
cmp=<file>  cmp=<file>  <file>.cmp 
nocmp=<file>  ncmp=<file>   
fortran=<file>  f=<file>  see User Guide 
nofortran=<file>   nf   
list[=<file>]  l[=<file>]  see User Guide 
nolist  nl   
Listing     
cmpoptions[=<list>]  cp[=<list>]  cp=n 
nocmpoptions  ncp   
lines=<integer>  ln=<integer>  ln=55 
listingwidth=<integer>  lw=<integer>  lw=132 
listoptions=<list>  lo=<list>  l=0 
suppress=<list>  su=<list>  off 
Advanced Optimization     
[no]aggressive=<list>  [n]ag=<list>  nag 
[no]arclimit=<integer>  [n]arclm=<integer>  arclm=5000 
cacheline=<integer>  chl=<integer>  chl=32,32 
cache_prefetch_line_count= <integer>[,integer]  cplc=<integer>  cplc=0 
cachesize=<integer>  chs=<integer>  chs=8 
dpregisters=<integer>  dpr=<integer>  dpr=32 
each_invariant_if_growth= <integer>  eiifg=<integer>  eiifg=20 
fpregisters=<integer>  fpr=<integer>  fpr=32 
[no]fuse  fuse  nofuse 
fuselevel=<integer>  fuselevel=<integer>  fuselevel=0 
heaplimit=<integer>  heap=<integer>  heaplimit=116 
hoist_loop_invariants= <integer>  hli= <integer>  hli=1 
[no]interleave  intl  interleave 
library_calls=<name>  lc=<name>  off 
limit=<integer>  lm=<integer>  lm=20000 
[no]machine=<list>  [no]ma=<list>  ma=s 
max_invariant_if_growth= <integer>  miifg=<integer>  miifg=500 
routine=<routine_name> /<limited qualifiers>  rt=<routine_name> /<limited qualifiers>  off 
setassociativity=<integer>  sasc=<integer>  sasc=1 
[no]srlcd  srlcd  nosrlcd 
unroll=<integer>  ur=<integer>  ur=4 
unroll2=<integer>  ur2=<integer>  ur2=160 
unroll3=<integer>  ur3=<integer>  ur3=20 

Table 2 Ranges

Value  Meaning 
assume   
c*$* assert argument aliasing 
c*$* assert bounds violations 
c*$* assert temporaries for constant arguments 
c*$* assert equivalence hazard 
c*$* assert last value needed 
directives   
KAP assertions 
KAP c*$* directives 
KAP Parallel Computing Forum directives 
VAST cvd$ directives 
listoptions   
Calling tree at end of program listing 
KAP options used, printed at end of each program unit 
Loop-by-loop optimization table 
Names of program unit 
Original program listing 
Performance statistics compilation 
Summary of optimizations performed 
Transformed program listing 
machine   
Prefer nonstride-1 array access 
Directs KAP to parallelize only outer loops 
Prefer optimization of DO loop stride-1 references 
optimize   
No optimization performed 
Only simple analysis and optimization performed Induction variables recognized DO loop interchanging techniques applied 
Lifetime analysis performed More powerful data dependence tests used 
More loop interchanging performed Special case data dependence tests performed Wraparound variables recognized 
Loop interchanging around reductions More exact data dependence tests performed 
Array expansion enabled 
other   
Limit  >0 
Arclimit  >0 
Library_calls  BLAS 
roundoff   
No roundoff- changing transformations 
Expression simplification and code floating enabled Arithmetic reductions recognized Loop interchanging around arithmetic reductions allowed if -optimize is greater than 4 Loop rerolling allowed when -scalaropt is greater than 1 
Reciprocal substitution performed to move an expensive division outside of loop 
Recognize real induction variables if -scalaropt is greater than 2 or -optimize is greater than 1 Memory management enabled if -scalaropt=3 Expressions such as A / B / C can be rotated to A / (B*C) 
scalaropt   
No scalar optimizations performed 
IF loops changed into DO loops Simple code floating out of loops performed Inaccessible or unused code is removed Forward substitution of variables performed Dusty deck IF transformations enabled 
Full range of scalar optimizations enabled Floating invariant IFs out of loops Induction variable recognition Loop rerolling if -roundoff is greater than 1 Loop peeling, loop fusion, loop unrolling 
Memory management performed if -roundoff=3 Additional dead-code elimination performed during output conversion 
suppress   
Disables data dependence messages 
Disables syntax error messages 
Disables informational messages 
Disables not optimized messages 
Disables questions 
Disables standardized messages 
Disables syntax warning messages 
syntax   
Strict compliance with ANSI Fortran 
Accepts Digital Fortran source files 
unroll - enabled only with -scalaropt=2 
- unroll=<#it> and -unroll2=<weight> 
  where:

<#it> is the maximum number of iterations to unroll.


=0 use default values to unroll
=1 no unrolling

<weight> is the maximum weight, estimate of work, in an unrolled loop. Work is estimated by counting operands and operators in a loop. The default is at most 4 iterations and maximum work of 100 per unrolled iteration. 

Table 3 KAP Assertions and Directives

KAP Assertion  Duration 
c*$* assert [no]argument aliasing  Until reset 
c*$* assert [no]bounds violations  Until reset 
c*$* assert [no]equivalence hazard  Until reset 
c*$* assert [no]interchange  Next loop 
c*$* assert [no]last value needed  Until reset 
c*$* assert permutation (name)  Next loop 
c*$* assert no recurrence (<names>)  Next loop 
c*$* assert relation (name .xx. variable/constant)  Next loop 
c*$* assert no sync  Next loop 
c*$* assert [no]temporaries for constant arguments  Until reset 
Parallel Processing:   
c*$* assert concurrent call  End of loop 
c*$* assert do (concurrent)  End of loop 
c*$* assert do (concurrent call)  End of loop 
c*$* assert do (serial)  End of loop 
c*$* assert do prefer (concurrent)  End of loop 
c*$* assert do prefer (serial)  End of loop 
KAP Directive  Range of Values 
Optimization:   
c*$* arclimit (n)  0-5000 
c*$* beginblock  <directive block> 
c*$* endblock   
c*$* each_ invariant_if_growth (n)  0-20 
c*$* limit (n)  >0 
c*$* max_invariant_if_growth (n)  0-500 
c*$* optimize (n)  0-5 
c*$* roundoff (n)  0-3 
c*$* scalar optimize (n)  0-3 
c*$* unroll (n1[,n2]) n1 for unroll, n2 for unroll2  n1,n2>0 
Parallel Processing:   
c*$* [no]concurrentize  0-5 
c*$* minconcurrent  0-999999 
Inlining and Interprocedural Analysis:   
c*$*[no]inline [scope] [(name)]  On/off 
c*$*[no]ipa [scope] [(name)]  On /off 
Memory Management:   
c*$* padding (name)  (var-list) 
c*$* storage order (names)  (var-list) 
Assertions:   
c*$*[no]assertions  On/off