Compaq KAP Fortran/OpenMP
for Tru64 UNIX
User Guide


Previous Contents Index

4.10 Intrinsics


New intrinsics in Fortran 90 and extensions of Fortran 77 intrinsics defined in Fortran 90 will be translated into equivalent external calls to the library, possibly embedded in looping constructs. This support for the new intrinsics includes support for Fortran 90 subroutine intrinsics.

4.11 Input/Output


All Fortran 90 I/O constucts are lowered by KAP into direct calls to the host system's I/O library. The Fortran 90 I/O control specifiers, formatting, and data transfer extensions are provided by the library. The I/O variable list is rewritten as a sequence of data transfer requests embraced by some control structure to start and stop each I/O and to handle the I/O exceptions.


Chapter 5
Command Switches

This chapter describes the command-line switches of the basic Compaq KAP Fortran/OpenMP for Tru64 UNIX.

To specify a command switch, you can use the long name or short name. Additionally, you can specify command switches on the first line of the source file. (See the description of the !*$* switch line at the end of this chapter.)

Note

The short names for switches are provided for the convenience of interactive users. Because the short names may not be unique in future versions of KAP, the long names should be used when compatibility between versions is required.

Many KAP command switches can also be set with inline directives or assertions. See Chapter 6 for information about directives and Chapter 7 for information about assertions. Chapter 9 shows extensive examples of transformations controlled by these switches.

Tables 5-1 and 5-2 list the command switches for the kf90 driver and the kapf90 translator. The first column lists the long name of each switch, and also shows the functional categories of switches as follows:

The next two columns list the short names and default value of each switch.

See Chapter 10, the -listoptions=k switch, for how to get the switch values active for a given KAP run.

Note

A hyphen (-) is required before each switch name, but the hyphen is not shown in the following tables.

Table 5-1 Command-Line Switches for kf90 driver
Long Name Related Switch Short Name Default Value
fext=Fortran file extension     fext=f
f90=path to Fortran compiler     f90=/usr/bin/f90
f90kap=path to kapf90     f90kap=/usr/bin/kapf90
fkapargs=kap_option_string      
S     off
tmpdir=temporary_directory_path_string     tmpdir=/tmp/
tune=architecture     tune=current system archtecture
verbose   v nov

Table 5-2 Command-Line Switches for kapf90 Translator
Long Name Related Switch Short Name Default Value
General Optimization      
[no]interchange o,so interchange interchange
[no]namepartitioning=
integer, integer
so [n]namepart=
(<integer>,<integer>)
nonamepartitioning
optimize=integer   o=<integer> optimize=5
[no]recursion   [no]rec norecursion
roundoff=integer o, so r=<integer> roundoff=3
scalaropt=integer r so=<integer> scalaropt=3
[no]skip   [n]sk noskip
tune=architecture   tune=<architecture> <architecture>
Parallel Processing Switches      
chunk scheduling   1
[no]concurrent   [n]conc noconcurrent
minconcurrent=integer   mc minconcurrent=1000
[no]parallelio   [n]pio noparallelio
pdefault     safe
psyntax conc   openmp
scheduling=list   sched=<list> scheduling=e
Fortran 90 Dialect      
align_common=integer   align_common=<integer> align_common=1
align_struct=integer   align_struct=<integer> align_struct=4
assume=list   a=<list> assume=cel
noassume   na  
[no]datasave sv [n]ds datasave
[no]dlines   [n]dl nodlines
[no]escape   [n]escape escape
[no]freeformat   [n]ff nofreeformat
integer=integer   int=<integer> integer=4
intlog sy intlog intlog
kind=integer log,
real, int
kind=<integer> kind=4
logical=integer   log=<integer> logical=4
[no]natural   [n]nat see Section 5.4.12
[no]onetrip   [n]1 noonetrip
real=integer   rl=<integer> real=4
save=list ds, rc sv=<list> save=manual_adjust
scan=integer   scan=<integer> scan=72
syntax=value   sy=<value> off
[no]type   [n]ty notype
Directives      
directives=list   dr=<list> directives=ak
nodirectives=list   ndr  
[no]ignoreoptions   [n]ig noignoreoptions
Inlining and IPA      
inline[=names] aggressive 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 ipa incr=<file> off
ipa_create=file   ipacr=<file> off
inline_depth=integer   ind=<integer> inline_depth=2
ipa_depth=integer   ipad=<integer> ipa_depth=2
inline_from_files=file, file inl inff=<file>,<file> current source file
ipa_from_files=file, file ipa ipaff=<file>,<file> current source file
inline_from_libraries=library,
library
inl infl=<library>,
<library>
off
ipa_from_libraries=library, library ipa 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     noipa_optimize=0
Input-Output      
cmp=file   cmp=<file> nocmp
include=path-name   [n]inc=<path-name> noinc
list=[file]   [n]l  
[no]list   [n]l  
Listing      
cmpoptions[=list]   cp[=<list>] nocmpoptions
lines=integer   ln=<integer> lines=55
listingwidth=integer lo lw=<integer> listingwidth=132
listoptions=list   lo=<list> listoptions=0
suppress=list   su=<list> off
Advanced Optimization      
aggressive=list nat,inl ag=<list> noaggressive
noaggressive   nag  
arclimit=integer so, r arclm=<integer> arclimit=5000
cacheline=integer [,integer]   chl=<integer>
[,<integer>]
cacheline=32,32
cache_prefetch_line_count=integer   cplc=<integer> cache_prefetch_line_count=0
cachesize=integer [,integer]   chs=<integer>
[,<integer>]
cachesize=8,0
dpregisters=integer   dpr=<integer> dpregisters=32
each_invariant_if_growth=integer so, r, miifg eiifg=<integer> eiifg=20
fpregisters=integer   fpr=<integer> fpr=32
[no]fuse so,o [n]fuse nofuse
fuselevel=integer fuse fuselevel=<integer> fuselevel=0
generateh hdir,useh   off
[no]hdir=directory name   hdir=<directory name> hdir=<current directory>
heaplimit=integer   heap=<integer> heaplimit=100
hoist_loop_invariants=integer   hli hli=1
[no]interleave   intl interleave
library_calls=name ro lc=<name> off
limit=integer   lm=<integer> lm=10
[no]machine=list so, r ma=<list> ma=s
max_invariant_if_growth=integer so, r, eiifg miifg=<integer> miifg=500
[no]routine=
routine_name/limited switches
See text [n]rt=<routine_name>
/<limited switches>
noroutine
setassociativity=
integer [,integer]
so,r sasc=
<integer>[,<integer>]
sasc=1,1
[no]srlcd so [n]srcld nosrlcd
unroll=integer so, r ur=<integer> unroll=4
unroll2=integer so, r ur2=<integer> unroll2=160
unroll3=integer so, r ur3=<integer> unroll3=1
useh hdir,genh   off

The subheadings in the following sections list the long and short names for each switch, followed by its default in parentheses.

Unless otherwise noted, the code examples in this chapter were run with -optimize=5, -scalaropt=2, -roundoff=2, and -unroll=1.

5.1 Switches for the kf90 Driver

The following sections explain the function of each kf90 driver switch.

5.1.1 -fext, (-fext=f)

This switch treats files with the indicated extension as Fortran source files.

5.1.2 -f90, (-f90=/usr/bin/f90)

This switch provides an alternate path to the Fortran compiler.

5.1.3 -f90kap, (-f90kap=/usr/bin/kapf90)

This switch provides an alternate path to the kapf90 translator.

5.1.4 -fkapargs

This switch passes switches to the kapf90 translator.

5.1.5 -S, (off)

This switch tells the kf90 driver to save all intermediate files and to pass on the switch to the Fortran compiler to save the assembly language output.

5.1.6 -tmpdir, (-tmpdir=/tmp/)

This switch provides an alternate directory for temporary files. This switch may also be set by the environment variable TMPDIR. Kapc determines whether the host Alpha architecture is ev4, ev5, or ev6 and then optimizes your program for that architecture by default. In the event you compile a program on one architecture but plan to run it on another, you should override the default by setting -tune equal to the architecture of the target system.

5.1.7 -tune, (-tune=<current system architecture>)

The -tune switch and the Fortran compiler -tune host switch work independently and perform different optimizations. If the switch appears on the kf90 command line inside the -fkapargs switch, for example:

> kf90 myprog.f -fkapargs='-tune=ev6'

the switch value will be applied only to the kapf90 translator. However, in the case:

> kf90 myprog.f -tune=ev6

the switch will be applied to both kapf90 and the Fortran compiler.


Previous Next Contents Index