Appendix A. PFA Command Line Options

This appendix contains the following sections:

This appendix lists and describes the options to PFA. The default settings are satisfactory for most programs. However, you can alter the defaults to customize output. PFA accepts several command line options. Table A-1 lists the default settings for each option.

Overview

Table A-1 summarizes the PFA command line options. The Reference column lists the functional categories of the following options:

  • parallel execution

  • general optimization

  • Fortran 77 language control

  • directive control

  • listing

The next three columns list the long names, short names, and default values of the options. Following the table is an explanation of each option, including the option's long and short names, its default, and, if applicable, the long and short names for the NO version of the option.


Note: You can replace many of the PFA command line options described in this chapter with in-code directives.


Table A-1. PFA Command Line Options

Reference

Long Name

Short Name

Default Value

Parallelization

[NO]CONCURRENTIZE

MINCONCURRENT=n

[N]CONC

MC=n

CONCURRENTIZE

MINCONCURRENT=500

Optimization

ARCLIMIT

LIMIT=n

OPTIMIZE=n

ROUNDOFF=n

SCALAROPT=n

UNROLL=n

UNROLL2=n

ARCLM=n

LM=n

O=n

R=n

SO=n

UR=n

UR22=n

ARCLIMIT=5000

LIMIT=20000

OPTIMIZE=5

ROUNDOFF=0

SCALAROPT=3

UNROLL=4

UNROLL2=100

Fortran 77 Language

Control

ASSUME=list

[NO]DLINES

[NO]ONETRIP

SAVE=c

SCAN=n

SYNTAX=c

AS=list

[N]DL

[N]l

SV=c

SCAN=n

SY=c

ASSUME=EL

NODLINES

NOONETRIP

SAVE=A

SCAN=72

(option off)

Inlining and Interprocedural Analysis

INLINE[=list]

IPA[=names]

INLINE_CREATE=name

IPA_CREATE=name

INLINE_FROM_FILES=list

IPA_FROM_FILES=list

INLINE_FROM_LIBRARIES=list

IPA_FROM_LIBRARIES=list

INLINE_LOOP_LEVEL=n

IPA_LOOP_LEVEL=n

INLINE_MAN

IPA_MAN

INLINE_DEPTH

IN IPAINCR=name

IPACR=name

INFF=list

IPAFF=list

INFL=list

IPAFL=list

INLL=n

IPALL=n

INM

IPAM

IND

(option off)

(option off)

(option off)

(option off)

(option off)

(option off)

(option off)

(option off)

(INLL=10IPALL=10

(option off)

INLL=10 IPALL=10) IND=10

Directives

[NO]DIRECTIVES=list

[N]DR=list

DIRECTIVES=AKSV

I/O

INPUT=file.f

[NO]FORTRAN=file

[NO]LIST=file

file.f

[N]F=file

[N]L=file

file.f

F=file.m

L=file.l

Listing

LINES=n

LISTOPTIONS=list

SUPPRESS=list

LN=n

LO=list

SU=list

LINES=55

LISTOPTIONS=OL

(option off)

Obsolete

CREATE

LIBRARY=file

[NO]EXPAND=list

LIMIT2=n

CR

LIB=file

EX=list

LM2=n

(option off)

(option off)

(option off)

LM2=5000


Options Summary

This section lists and defines all PFA command line options alphabetically.

ARCLIMIT

The -ARCLIMIT option, described in Table A-2, controls the size of the internal table used to store data dependence information (arcs).

Table A-2. ARCLIMIT Option

Long Option Name

Short Option Name

Default Value

-ARCLIMIT=n

-ARCLM=n

5000


ASSUME

The -ASSUME option, described in Table A-3, controls certain global assumptions of a program.

Table A-3. ASSUME Option

Long Option Name

Short Option Name

Default Value

-ASSUME=list

-AS=list

EL

You can also use various assertions to control these assumptions. list is any combination of the following values:

E 

Means that equivalence variables can refer to the same memory location inside one loop.

L 

Is important when a scalar is assigned in a loop run in parallel. If ASSUME is L, PFA uses a temporary variable within the optimized loop and assigns the last value to the original scalar if PFA determines that scalar can be reused before it is assigned.

P 

Allows for parameter aliasing in a subprogram.

CONCURRENTIZE

The -CONCURRENTIZE option, described in Table A-4, converts eligible loops to run in parallel.

Table A-4. CONCURRENTIZE Option

Long Option Name

Short Option Name

Default Value

-CONCURRENTIZE

-C

-CONCURRENTIZE

See also NOCONCURRENTIZE.

DIRECTIVES

The -DIRECTIVES option, described in Table A-5, specifies the directives and assertions to accept.

Table A-5. DIRECTIVES Option

Long Option Name

Short Option Name

Default Value

-DIRECTIVES=list

-DR=list

AKSV

list consists of any combination of

A 

Accepts assertions.

C 

Accepts Cray CDIR$ directives. Because of differences between SGI and Cray hardware, certain data dependencies that CDIR$IVDEP ignores in a loop are not always safe to ignore on SGI hardware. PFA does not recognize the CDIR$IVDEP directive by default. You can, however, turn on Cray-directive recognition, which will cause PFA to treat the Cray directive as a C*$*ASSERT DO (CONCURRENT) assertion.

K 

Accepts PFA C*$* directives.

S 

Accepts C$ directives. PFA recognizes the directives C$&C, C$, and $DOACROSS. (For more information, see the Fortran 77 Programmer's Guide.) If a C$DOACROSS directive appears, PFA does not examine or alter the loop to which the directive applies. This allows you to mix code you converted to parallel execution with code that PFA converted to parallel execution.

V 

Accepts VAST CVD$ directives.

See also NODIRECTIVES.

DLINES

The -DLINES option, described in Table A-6, tells PFA to treat letter D in column one as if the letter were a character space.

Table A-6. DLINES Option

Long Option Name

Short Option Name

Default Value

-DLINES

-DL

-NODLINES

PFA then parses the rest of that line as a normal Fortran 77 statement. See also NODLINES.

FORTRAN

The -FORTRAN option, described in Table A-7, specifies the name of the PFA-transformed source.

Table A-7. FORTRAN Option

Long Option Name

Short Option Name

Default Value

-FORTRAN=filename

-F=filename

filename. m

filename is the name of the Fortran source.

INLINE

The -INLINE option, described in Table A-8, specifies the routines to be inlined.

Table A-8. INLINE Option

Long Option Name

Short Option Name

Default Value

-INLINE[=list]

-IN[=list]

none

If this option is given with a (colon-separated) list of routine names, then only those routines will be inlined. If it is given without a list of names, then PFA will attempt to inline all eligible routines.

INLINE_CREATE

The -INLINE_CREATE option, described in Table A-9, creates a library of prepared routines for later use with the -INLINE_FROM_LIBRARIES option.

Table A-9. INLINE_CREATE Option

Long Option Name

Short Option Name

Default Value

-INLINE_CREATE=name

-INCR=name

option off

You are not required to create a library to do inlining; you can inline directly from a source file.

Constructing a library will save time if the inlining operation is to be done repeatedly. PFA analyzes the current source file and places the appropriate information into the file named with the -INLINE_CREATE option. For maximum compatibility, the filename extension .klib is recommended: for example, samp.klib.

INLINE_DEPTH

The -INLINE_DEPTH option, described in Table A-10, restricts the number of times PFA will continue to attempt inlining on already inlined routines.

Table A-10. INLINE_DEPTH Option

Long Option Name

Short Option Name

Default Value

-INLINE_DEPTH=n

-IND=n

10

This option controls this process, as routines are only inlined to the specified depth.

As a special case, if you specify the value –1, only routines that do not reference other routines are inlined (that is, only leaf routines are inlined). The only valid negative number is –1; do not specify –2, –3, and so on. Note that there is no -IPA_DEPTH option.

INLINE_FROM_FILES

The -INLINE_FROM_FILES option, described in Table A-11, specifies where to look for routines named in the -INLINE option.

Table A-11. INLINE_FROM_FILES Option

Long Option Name

Short Option Name

Default Value

-INLINE_FROM_FILES=list

-INFF=list

current source file

Files with the extension .f are assumed to be Fortran source, while files with the extension .klib are assumed to be PFA-produced libraries. Specify multiple files and directories by using a colon-separated list.


Note: This option alone does not initiate inlining. It only specifies where to look for the routines. Use this option with the -INLINE option.


INLINE_FROM_LIBRARIES

The -INLINE_FROM_LIBRARIES option, described in Table A-12, specifies where to look for the routines named in the -INLINE option.

Table A-12. INLINE_FROM_LIBRARIES Option

Long Option Name

Short Option Name

Default Value

-INLINE_FROM_LIBRARIES=list

-INFF=list

current source file

Files with the extension .f are assumed to be Fortran source, while files with the extension .klib are assumed to be PFA-produced libraries. Specify multiple libraries by using a colon-separated list.


Note: This option alone does not initiate inlining. It only specifies where to look for the routines. Use this option with the -INLINE option.


INLINE_LOOPLEVEL

The -INLINE_LOOPLEVEL option, described in Table A-13, restricts PFA occurrences within deeply nested loops.

Table A-13. INLINE_LOOPLEVEL Option

Long Option Name

Short Option Name

Default Value

-INLINE_LOOPLEVEL=n

-INLL=n

10

Thus, a value of 1 restricts PFA to deal with routines only at the singlemost deeply nested level; a value of 2 restricts PFA to the deepest and second-deepest levels; and so on.

To determine what is most deeply nested, PFA constructs a call graph to account for nesting due to loops that occur farther up the call chain.

INLINE_MAN

The -INLINE_MAN option, described in Table A-14, turns on recognition of the C*$*INLINE directive.

Table A-14. INLINE_MAN Option

Long Option Name

Short Option Name

Default Value

-INLINE_MAN

-INM

option off

The C*$*INLINE directive allows you select individual occurrences of routines to be inlined.

INPUT

The -INPUT option, described in Table A-15, specifies the name of the PFA input file.

Table A-15. INPUT Option

Long Option Name

Short Option Name

Default Value

-INPUT=filename.f

-I=filename.f

filename.f

It is not necessary to precede the input filename with this option; PFA assumes that a command line argument not preceded by a dash is the input filename.

IPA

The -IPA option, described in Table A-16, specifies the routine's IPA.

Table A-16. IPA Option

Long Option Name

Short Option Name

Default Value

-IPA[=list]

-IPA[=list]

none

If this option is given with a colon-separated list of routine names, then only those routines will be IPAed. If it is given without a list of names, then PFA will attempt to IPA all eligible routines.

IPA_CREATE

The -IPA_CREATE option, described in Table A-17, creates a library of prepared routines for later use with the -IPA_FROM_LIBRARIES option.

Table A-17. IPA_CREATE Option

Long Option Name

Short Option Name

Default Value

-IPA_CREATE=name

-IPACR=name

option off

You are not required to create a library to do inlining; you can inline directly from a source file. Constructing a library will save time if the inlining operation is to be done repeatedly. PFA analyzes the current source file and places the appropriate information into the file named with the -INLINE_CREATE option. For maximum compatibility, the filename extension .klib is recommended: for example, samp.klib.

Libraries created for IPA only contain summary information and so can be used only for IPA.

IPA_FROM_FILES

The -IPA_FROM_FILES option, described in Table A-18, specifies where to look for the routines named in the -IPA option.

Table A-18. IPA_FROM_FILES Option

Long Option Name

Short Option Name

Default Value

-IPA_FROM_FILES=list

-IPAFF=list

current source file

Files with the extension .f are assumed to be Fortran source, while files with the extension .klib are assumed to be PFA-produced libraries. Specify multiple files using a colon-separated list.


Note: This option alone does not initiate IPA. It only specifies where to look for the routines. Use this option in conjunction with the -IPA option.


IPA_FROM_LIBRARIES

The -IPA_FROM_LIBRARIES option, described in Table A-19, specifies where to look for the routines named in the -IPA option.

Table A-19. IPA_FROM_LIBRARIES Option

Long Option Name

Short Option Name

Default Value

-IPA_FROM_LIBRARIES=list

-IPAFL=list

none

Files with the extension .f are assumed to be Fortran source, while files with the extension .klib are assumed to be PFA-produced libraries. Specify multiple libraries by using a colon-separated list.


Note: This option alone does not initiate IPA. It only specifies where to look for the routines. Use this option in conjunction with the -IPA option.


IPA_LOOPLEVEL

The -IPA_LOOPLEVEL option, described in Table A-20, restricts PFA to occurrences within deeply nested loops.

Table A-20. IPA_LOOPLEVEL Option

Long Option Name

Short Option Name

Default Value

-IPA_LOOPLEVEL=n

-IPALL=n

10

A value of 1 restricts PFA to routines only at the singlemost deeply nested level; a value of 2 restricts PFA to the deepest and second-deepest levels; and so on. To determine what is most deeply nested, PFA constructs a call graph to account for nesting due to loops that occur further up the call chain.

IPA_MAN

The -IPA_MAN option, described in Table A-21, turns on recognition of the C*$*IPA directive.

Table A-21. IPA_MAN Option

Long Option Name

Short Option Name

Default Value

-IPA_MAN

-IPAM

option off

The C*$*IPA directive allows you select individual occurrences of routines to be IPAed.

LIMIT

The -LIMIT option, described in Table A-22, reduces PFA processing time by limiting the amount of time PFA can spend on trying to determine whether a loop is safe to run in parallel.

Table A-22. LIMIT Option

Long Option Name

Short Option Name

Default Value

-LIMIT=n

-LM=n

LIMIT=5000

PFA estimates how much time is required to analyze each loop nest construct. If an outer loop looks like it would take too much time to analyze, PFA ignores the outer loop and recursively visits the inner loops.

Larger limits often allow PFA to generate parallel code for deeply nested loop structures that it might not otherwise be able to run safely in parallel. However, with larger limits PFA can also take more time to analyze a program. (The limit does not correspond to the DO loop nest level. It is an estimate of the number of loop orderings that PFA can generate from a loop nest.)

LINES

The -LINES option, described in Table A-23, paginates the listing for printing.

Table A-23. LINES Option

Long Option Name

Short Option Name

Default Value

-LINES=n

-LN=n

LINES=55

Use this option to change the number of lines per page. Specifying -LINES=0 paginates at subroutine boundaries.

LIST

The -LIST option, described in Table A-24, specifies the name of the PFA listing file.

Table A-24. LIST Option

Long Option Name

Short Option Name

Default Value

-LIST=filename

-L=filename

LIST=filename.l

filename is the name of the Fortran source.

LISTOPTIONS

The -LISTOPTIONS option, described in Table A-25, specifies the information to include in the listing file (.l).

Table A-25. LISTOPTIONS Option

Long Option Name

Short Option Name

Default Value

-LISTOPTIONS=list

-LO=list

OL

list consists of any combination of

C 

Calling tree at the end of the program listing.

I 

Transformed program file annotated with line numbers in the source program. Error messages and debugging information can refer to the original source rather than the transformed source. When PFA is run as part of an f77 compilation, this option is added automatically.

K 

PFA option used at the end of each program unit.

L 

Loop-by-loop optimization table.

N 

Program unit names, as processed, to the standard error file. This option is added automatically as part of an f77 -v compilation.

O 

Annotated listing of the original program.

P 

Processing performance statistics.

S 

Summary of optimization performed.

T 

Annotated listing of the transformed program.

MINCONCURRENT

The -MINCONCURRENT option, described in Table A-26, establishes the minimum amount of work needed inside the loop to make executing a loop in parallel profitable.

Table A-26. MINCONCURRENT Option

Long Option Name

Short Option Name

Default Value

-MINCONCURRENT=n

-MC=n

500

If the loop does not contain at least this much work, the loop will not be run in parallel. If the loop bounds are not constants, an IF clause will be automatically added to the PFA-generated DOACROSS directive to test at run time whether sufficient work exists.

The MINCONCURRENT value is a count of the number of operations (for example, add, multiply, load, store) in the loop, multiplied by the number of times the loop will be executed.

NOCONCURRENTIZE

The -NOCONCURRENTIZE option, described in Table A-27, prevents PFA from converting loops to run in parallel.

Table A-27. NOCONCURRENTIZE Option

Long Option Name

Short Option Name

Default Value

-NOCONCURRENTIZE

-NCONC

none

See also CONCURRENTIZE.

NODIRECTIVES

The -NODIRECTIVES option, described in Table A-28, tells PFA to ignore all directives and assertions.

Table A-28. NODIRECTIVES Option

Long Option Name

Short Option Name

Default Value

-NODIRECTIVES

-NDR

none

See also DIRECTIVES.

NODLINES

The -NODLINES option, described in Table A-29, tells PFA to treat lines starting with D as though they were comments.

Table A-29. NODLINES Option

Long Option Name

Short Option Name

Default Value

-NODLINES

-NDL

-NODLINES

See also DLINES.

NOONETRIP

The -NOONETRIP option, described in Table A-30, conforms to the Fortran 77 standard, which specifies that a DO loop whose termination condition is initially satisfied is not executed.

Table A-30. NOONETRIP Option

Long Option Name

Short Option Name

Default Value

-NOONETRIP

-N1

-NOONETRIP

See also ONETRIP.

ONETRIP

The -ONETRIP option, described in Table A-31, allows compatibility with older versions of Fortran where a DO loop is always executed at least once.

Table A-31. ONETRIP Option

Long Option Name

Short Option Name

Default Value

-ONETRIP

-1

-NOONETRIP

See also NOONETRIP.

OPTIMIZE

The -OPTIMIZE option, described in Table A-32, sets the optimization level.

Table A-32. OPTIMIZE Option

Long Option Name

Short Option Name

Default Value

-OPTIMIZE=n

-O=n

5

The higher you set the optimization level, the more code is optimized and the longer PFA runs.

Valid values for n are the integers

0 

Avoids converting loops to run in parallel.

1 

Converts loops to run in parallel without using advanced data dependence tests. Enables loop interchanging.

2 

Determines when scalars need last-value assignment using lifetime analysis. Also uses more powerful data dependence tests to find loops that can be run safely in parallel. This level allows reductions in loops that execute concurrently, but only if -ROUNDOFF is set to 2.

3 

Breaks data dependence cycles using special techniques and additional loop interchanging methods, such as interchanging triangular loops. This level also implements special-case data dependence tests.

4 

Generates two versions of a loop, if necessary, to break a data dependence arc. This level also implements more exact data dependence tests and allows special index sets (called wraparound variables) to convert more code to run in parallel.

5 

Fuses two adjacent loops if it is legal to do so (no data dependencies) and if the loops have the same control values. In certain limited cases, this level recognizes arrays as local variables. Level 5 also tells PFA to try harder to take the outermost loop possible (of a set of nested loops) and run it in parallel.


Note: If you want to use the -UNROLL command line option, you must set the -OPTIMIZE option to 4 or higher (the default optimization level is above this threshold).


ROUNDOFF

The -ROUNDOFF option, described in Table A-33, controls whether PFA runs a reduction operation in parallel.

Table A-33. ROUNDOFF Option

Long Option Name

Short Option Name

Default Value

-ROUNDOFF=n

-R=n

0

Valid values for n are

0–1 

Suppresses any round-off changing transformations.

2 

Allows reductions to be performed in parallel. The valid reduction operators are addition, multiplication, min, and max. -ROUNDOFF=2 is one of the most common user options.

3 

Recognizes REAL induction variables. Permits the memory management transformations.

SAVE

Table A-34 describes the -SAVE option.

Table A-34. SAVE Option

Long Option Name

Short Option Name

Default Value

-SAVE=c

-SV=c

A

Either of the following values are valid for c:

A 

Performs lifetime analysis on a procedure`s variables to try and determine those that need to have their value saved across invocations of the procedure. When it finds such a variable, PFA generates a SAVE statement for the variable. This is the default value.

M 

Does not generate SAVE statements.

SCALAROPT

The -SCALAROPT=n option, described in Table A-35, controls the amount of standard scalar optimizations attempted by PFA.

Table A-35. SCALAROPT Option

Long Option Name

Short Option Name

Default Value

-SCALAROPT=n

-SO=n

3

Valid values for n are

0 

Performs no scalar transformations.

1 

Enables dead code elimination, pulling loop variables, forward substitution, and conversion of IF-GOTO into IF-THEN-ELSE.

2 

Enables induction variable recognition, loop unrolling, loop fusion, array expansion, scalar promotion, and floating invariant IF tests. (Loop fusion also requires -OPTIMIZE=5.)

3 

Enables the memory management transformations. (Memory management also requires -ROUNDOFF=3.)

SCAN

The -SCAN option, described in Table A-36, controls the number of columns that are assumed to be significant (PFA ignores anything beyond the specified column).

Table A-36. SCAN Option

Long Option Name

Short Option Name

Default Value

-SCAN=n

-SCAN=n

72

Specifying any of the following f77 options automatically sets this option: -col72, -col120, or -extend _source.

SUPPRESS

The -SUPPRESS option, described in Table A-37, lets you individually disable classes of PFA messages that are normally included in the listing (.l) file.

Table A-37. SUPPRESS Option

Long Option Name

Short Option Name

Default Value

-SUPPRESS=list

-SU=list

option off

These messages range from syntax warnings and error messages to messages about the optimizations performed.

list is of any combination of the following:

D 

Data dependence

E 

Syntax error

I 

Information

N 

Not able to run loop in parallel

Q 

Questions

S 

Standard messages

W 

Warning of syntax error (PFA adds the -SUPPRESS=W option automatically if you use the -w option to f77)

SYNTAX

Setting the -SYNTAX option, described in Table A-38, alters the interpretation of the Fortran input to be in compliance with other standards.

Table A-38. SYNTAX Option

Long Option Name

Short Option Name

Default Value

-SYNTAX=c

-SY=c

SGI Fortran syntax

c is any of the following values:

A 

Interprets the source in strict compliance with the ANSI Fortran 77 standard.

V 

Interprets the source in compliance with the VMS Fortran standard but without the additional SGI extensions.

UNROLL

The -UNROLL option, described in Table A-39, unrolls scalar inner loops when PFA cannot run the loops in parallel.

Table A-39. UNROLL Option

Long Option Name

Short Option Name

Default Value

-UNROLL=n

-UR=n

4

When PFA unrolls a loop, it replicates the body of the loop a certain number of times, making the loop run faster. (In previous releases of PFA the default value was 1.)

UNROLL2

The -UNROLL2 option, described in Table A-40, allows you to adjust the number of operations used by the -UNROLL option.

Table A-40. UNROLL2 Option

Long Option Name

Short Option Name

Default Value

-UNROLL2=m

-UR2=m

50

Selecting a larger value for -UNROLL2 allows PFA to unroll loops containing more calculations.

This form of unrolling applies only to the innermost loops in a nest of loops. You can unroll loops whether they execute serially or concurrently.

f 77 passes this option to PFA automatically when you specify the f77 -d lines option.

Obsolete Syntax

Table A-41 describes obsolete PFA syntax.

Table A-41. Obsolete Options

Long Option Name

Short Option Name

Default Value

-EXPAND=list

-X=list, -EX=list

option off

-CREATE

-CR

option off

-LIBRARY=file

-LIB=file

option off

-LIMIT2=n

-LM2

5000

This version of PFA has altered some of the command line syntax (particularly the syntax for inlining).

For compatibility with the older versions, Table A-42 lists the options that are translated into their newer equivalents.

Table A-42. Obsolete Options and Their Equivalents

Old Version

New Version

-EXPAND=A

-INLINE

-EXPAND=M

-INLINE_MAN

-LIBRARY=name

-INLINE_CREATE=name

-LIMIT2=n

-ARCLIMIT=n

Whenever possible do not use this older syntax. Support for it might be withdrawn in the future.