Previous | Contents | Index |
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.
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.)
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.
A hyphen (-) is required before each switch name, but the hyphen is not shown in the following tables. |
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 |
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 |