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.
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 |
This section lists and defines all PFA command line options alphabetically.
The -ARCLIMIT option, described in Table A-2, controls the size of the internal table used to store data dependence information (arcs).
Long Option Name | Short Option Name | Default Value |
|---|---|---|
-ARCLIMIT=n | -ARCLM=n | 5000 |
The -ASSUME option, described in Table A-3, controls certain global assumptions of a program.
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. |
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.
The -DIRECTIVES option, described in Table A-5, specifies the directives and assertions to accept.
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.
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.
PFA then parses the rest of that line as a normal Fortran 77 statement. See also NODLINES.
The -FORTRAN option, described in Table A-7, specifies the name of the PFA-transformed source.
Long Option Name | Short Option Name | Default Value |
|---|---|---|
-FORTRAN=filename | -F=filename | filename. m |
filename is the name of the Fortran source.
The -INLINE option, described in Table A-8, specifies the routines to be inlined.
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.
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.
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.
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. |
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. |
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.
The -INLINE_MAN option, described in Table A-14, turns on recognition of the C*$*INLINE directive.
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.
The -INPUT option, described in Table A-15, specifies the name of the PFA input file.
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.
The -IPA option, described in Table A-16, specifies the routine's IPA.
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.
The -IPA_CREATE option, described in Table A-17, creates a library of prepared routines for later use with the -IPA_FROM_LIBRARIES 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.
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. |
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. |
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.
The -IPA_MAN option, described in Table A-21, turns on recognition of the C*$*IPA directive.
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.
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.
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.)
The -LINES option, described in Table A-23, paginates the listing for printing.
Use this option to change the number of lines per page. Specifying -LINES=0 paginates at subroutine boundaries.
The -LIST option, described in Table A-24, specifies the name of the PFA listing file.
Long Option Name | Short Option Name | Default Value |
|---|---|---|
-LIST=filename | -L=filename | LIST=filename.l |
filename is the name of the Fortran source.
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. |
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.
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.
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.
The -NODLINES option, described in Table A-29, tells PFA to treat lines starting with D as though they were comments.
Long Option Name | Short Option Name | Default Value |
|---|---|---|
-NODLINES | -NDL | -NODLINES |
See also DLINES.
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.
Long Option Name | Short Option Name | Default Value |
|---|---|---|
-NOONETRIP | -N1 | -NOONETRIP |
See also 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.
See also NOONETRIP.
The -OPTIMIZE option, described in Table A-32, sets the optimization level.
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). |
The -ROUNDOFF option, described in Table A-33, controls whether PFA runs a reduction operation in parallel.
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. |
Table A-34 describes the -SAVE option.
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. |
The -SCALAROPT=n option, described in Table A-35, controls the amount of standard scalar optimizations attempted by PFA.
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.) |
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).
Specifying any of the following f77 options automatically sets this option: -col72, -col120, or -extend _source.
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.
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) |
Setting the -SYNTAX option, described in Table A-38, alters the interpretation of the Fortran input to be in compliance with other standards.
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. |
The -UNROLL option, described in Table A-39, unrolls scalar inner loops when PFA cannot run the loops in parallel.
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.)
The -UNROLL2 option, described in Table A-40, allows you to adjust the number of operations used by the -UNROLL option.
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.
Table A-41 describes obsolete PFA syntax.
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.