This chapter describes how to use pghpf to control the translation process for a program written in High Performance Fortran (HPF). The pghpf command is called the compilation driver. The compilation driver controls several phases of compilation: HPF compiling, Fortran preprocessing and compiling, assembling and linking (linking includes the correct pghpf runtime routines for the target communications protocol). Since pghpf runs on a variety of host systems and generates output for several target systems, the commands that allow you to run (execute) a program will vary from system to system.
In general, using pghpf, the compilation process involves three steps:
To translate and link an HPF program, pghpf does the following:
For more information on the Fortran compiler, the assembler and linker, refer to the documentation listed in the Preface or to the appropriate manuals supplied with your system.
The following examples show several driver options that should be available on most systems. The command-lines and output may differ on your system. You can compile the HPF program hello.hpf using the default pghpf driver options.
By default, the executable output is placed in the file a.out. You can use the -o option to specify the output file.
$ pghpf hello.hpf
To see the command lines that pghpf will run, without actually executing them, use the driver's -dryrun option. For example:
$ pghpf -o hello hello.hpf
$ pghpf -dryrun -o hello hello.hpf
The pghpf command-line syntax is:
pghpf [options] filename [...]Where:
The compiler command-line options control various aspects of the compilation process. For a listing and a description of the pghpf specific compiler command-line options, refer to Chapter 2, pghpf Compiler Options. There are many additional options that apply to the node-compiler for your system (PGI's pgf77 Fortran is one possible node compiler), refer to the pgf77 User's Guide for details on the pgf77 compiler command-line options and to the user manual for your node compiler for other systems (you can also use the pghpf driver option -help to list the available options.
Several options provide for optimization of the HPF program. These compiler command line options, -O1, and -O2, provide varying levels of optimization to the HPF code, and also set optimization flags for the Fortran node compiler. For details on the optimization transformations applied, refer to the Release Notes supplied with the pghpf Software.
The pghpf driver uses the filenames that you specify on the command line to find and to create input and output files. This section describes the input and output filename conventions for the phases of the compilation process.
You can specify HPF source files, preprocessed HPF source files, assembly-language files, object files and libraries as inputs on the pghpf command line. The driver determines the type of each input file by examining the filename extension. The driver uses the following conventions:
Any input files not needed for a particular phase of processing are not processed. For example, if on the command line you use an assembly-language file (filename.s) and the -S option to stop before the assembly phase, the compiler takes no action on the assembly-language file. Processing stops after compilation and the assembler does not run (in this case compilation must have been completed in a previous pass which created the .s file). Refer to the following section, "Output Files," for a description of the -S option.
In addition to specifying primary input files, files with extensions indicating an HPF source file on the command line, you can insert text from include files using the INCLUDE statement or the preprocessor #include directive from within HPF source files (includes and preprocessing is only available if you use a .F extension or the -Mpreprocess command line argument).
When linking a program object file with a library, the linker extracts only those objects from the library that the program needs. The pghpf driver includes several libraries by default. For more information about libraries, refer to Chapter 4, pghpf Libraries.
By default, the pghpf executable output is placed in the file a.out. In addition, on the command line you can use the -o option to specify the output file.
If you use one of the options: -Mftn, -F, -S or -c, the compiler produces a file containing the output of the last phase that completes for each input file, as specified by the option supplied[*] . The output file will be a Fortran file with pghpf runtime library calls, an HPF preprocessed source file, an assembly-language file or an unlinked object file respectively. Similarly, the -E option does not produce a file, but displays the preprocessed HPF source file on the standard output. Using any of these options, the -o option is valid only if you specify a single input file. If no errors occur during processing, you can use the files created by these options as input to a future invocation of pghpf. Table 1-1 lists the stop after options and the output files that pghpf creates when you use these options.
If you specify multiple input files or do not specify an object filename, the compiler uses the input filenames to derive corresponding default output filenames of the following form, where filename is the input filename without its extension:
Table 1-1 Stop after Options and Outputs
Option
Stop after
Output from pghpf
-F
preprocessing
preprocessed
file - .f
-Mftn
HPF
compilation
Fortran
file
-S
compilation
assembly-language
file - .s
-c
assembly
unlinked
object file - .o
none
linking
executable
files a.out
When running pghpf you can continue the compilation and save the intermediate Fortran file generated from the first stage of pghpf using the -Mkeepftn option. This option continues the compilation after HPF compiling, but does not remove the intermediate Fortran file.
[*] The -Mipa interprocedural analysis processing, module processing, and the static initialization and prelinking phases of the compiler generate additional intermediate files. For further information, refer to the pghpf release notes.