HP UX Fortran Software manual +pa1

Page 33

NOTE: Object files and archive libraries must be accessible to the debugger if the +objdebug method of storing debug information is used.

+[no]onetrip

+onetrip generates code that executes any DO loop at least once. In accordance with the

 

language standard, HP Fortran will not execute a DO loop if either of the following conditions

 

is true:

 

The increment value is greater than zero, and the initial value is greater than the limit.

 

The increment value is less than zero, and the initial value is less than the limit.

 

However, older implementations of Fortran (for example, some FORTRAN 66 processors) always

 

execute a DO loop at least once. The +onetrip option provides compatibility with those

 

nonstandard implementations.

 

The default is +noonetrip.

-p

Generate code for prof(1) profiling. The has the same functionality as the +prof option. The

 

default is +noprof.

+P

Optimize the application based on profile data found in the database fileflow.data , produced

 

by compilation with +Ild(1), +I, and +df, for more details. The +P option is incompatible

 

with the +I and -Soptions. It is incompatible with the -goption only during compile time.

NOTE: This option is only valid on Itanium®-based systems.

+pa1

+pa1 compiles an application for routine-level profiling.

 

+pa is ignored when the HP Fortran compiler generates position-independent code

 

(PIC). The following options cause+pa to be ignored: +pic=short, +pic=long,

 

+zand +Z.

NOTE: +pal s ignored when the HP Fortran compiler generates position-independent

code (PIC). The following options cause +pato be ignored: +pic=short, +pic=long, +z and +Z.

+[no]parallel_intrinsics Link with the parallel version of some intrinsics in the libF90_parallel library. The default is +Onoparallel_intrinsics.

+pic={shortlongno}

+pic generates object code that can be added to a shared library. Object code

 

generated with this option is position-independent code (PIC). All addresses are either

 

pc-relative or indirect references.

 

The argument —shortor long— specifies the allocated size of the data linkage

 

table. Normally you would specify +pic=short to generate PIC. Use +pic=long

 

when the linker issues an error message indicating data linkage table overflow.

 

Specifying +pic=long causes the compiler to allocate additional space for more

 

imported symbols.

+[no]ppu

+ppu appends underscores to external names, including subroutines, functions, and

 

common blocks (for example, int_sum_ rather than the default int_sum).

 

For Itanium® and PA-RISC 64-bit architectures,the default is +ppu. For PA-RISC 32-bit

 

architecture, the default is +noppu.

 

NOTE: Mixed languages programs are affected by the +ppu option. C languages

 

references to Fortran routines and COMMON blocks require a trailing underscore

 

when the Fortran code is compiled with +ppu. +noppu may be used in 64-bit mode

 

to avoid trailing underscores.

+pre_include=file

+pre_include causes the compiler to prepend the code in file before any

 

compilation occurs. This option can appear more than once—each specifying different

 

files—on the same command line.

+[no]prof

+prof prepares object files for profiling with prof. The default is +noprof. The -p

 

option can be used to perform the same function as +prof. profis provided as part

 

of the HP-UX General Programming Tools” product (see prof(1)).

Command-line options 33

Image 33
Contents Abstract HP Fortran Programmer GuidePage Contents Controlling data storage Using the on statementDebugging Performance and optimizationWriting HP-UX applications 107 Using Fortran directives 123Calling C routines from HP Fortran 110 Migrating to HP Fortran 131Fortran 2003 Features 151 Porting to HP Fortran 141Documentation Feedback 153 Glossary 154 Index 159 HP secure development lifecycle An overview of HP Fortran HP Fortran compiler environmentAn overview of HP Fortran Options for controlling the f90 driver Driver+dryrun +preinclude= fileOptions for controlling the C preprocessor PreprocessorOptions for controlling the front end Front-end+moddir=directory Options for controlling optimization Back-end+Onooptimization Options for controlling code generationOptimization +DAmodelOptions for controlling the Linker Linker+FPflags LdirectoryOoutfile Tools HP-UX operating systemWl ,options F90 command syntax Compiling with the f90 commandCompiling and linking $ f90 hello.f90F90 command syntax Command-line optionsCommand-line options Example 2 hello.f90Commonly-used options Command-line options by categoryCommonly-used options +saveOptions listed by category Option descriptionsExample 3 Example Do I+1, N+allowunaligned 14164 Data type sizes and +autodbl4+autodbl +autodbl4 Boption+charlit77 +cpp=default+check=bounds +nocfc+DAmodel Name=def+DDdatamodel DatamodelareItanium BlendedItanium2 NativeValues for the +FP option Signals recognized by the +fpexception option Gformat77+hugecommon Example 4 % f90 +hugecommon=results pcvals.f90 +indirectcommonlist=file /usr/include directory +noimplicitnone+initheapcomplex=rvalival +initheapinteger=ivalIpo +io77+nocheckuf +nolibsRequires concurrent use of the +Oprofile=use option Levels of optimizationWith different values of optlevel +noobjdebug+pa1 +nodemandload the default +demandload option. The default is +nodemandload+r8 +realconstant=singleTp,/usr/ccs/lbin/cpp Tx,pathF90com End.oWx,arg1,arg2,...,argN Bdefault=symbol,symbol Symbol binding optionsBextern =symbol ,symbol Bhidden =symbol ,symbolUsing optimization options Reviewing general optimization optionsF90 +O3 +Osize myprog.f90 +Onoall +Oconservative+Onoautopar +Oautopar and omit +OparallelF90 +O3 +Onomoveflops +Ofltacc myprog.f90 Fine-tuning optimization optionsDefault is +Odataprefetch Default is +Onocxlimitedrange+Ocachepadcommon option +Onocxlimitedrange+Onofastaccess +Onofenvaccess+Onoentrysched +OnofailsafeOptimizations performed by +Onofltacc +Onoinline +Oinlinebudget=n +Oinlinebudget enables+Onoinlinefilename +Onoinline=function1,function2Millicode versions of intrinsic functions Values for the +Oinlinebudget option+Onoloopunroll=factor +inlinelevel num+Oloopunroll=4 +Onoloopunrolljam+Oparallelintrinsics Default is+Onoparmsoverlap+Onoparmsoverlap +Onopipeline+Onorecovery Default is +OnopromoteindirectcallsDefault is +Oshortdata=8 For +Oprofile=collectarc,strideFilenames recognized by f90 FilenamesLinking with f90 vs. ld Linking HP Fortran programsLibraries linked by default on Itanium Libraries linked by default on PA-RISCLinking to libraries $ f90 -c hello.f90 # compileLinking HP Fortran 90 routines Linking to nondefault librariesAdditional HP Fortran libraries Linking to shared librariesOpt/fortran90/lib/pa2064/ -lF90 -lisamstub Compiling programs with modules Special-purpose compilationsLibrary search rules $ f90 -Wl,-a,archive prog.f90 -lmSpecial-purpose compilations Example ExamplesExample 6 Example 2-2 main.f90 Example 7 Example 2-3 code.f90Example 8 Example 2-4 data.f90 Compiling with make$ f90 -o dostats data.f90 code.f90 main.f90 $ dostatsManaging .mod files Compiling for different PA-RISC machinesExample 9 Example 2-5 makefile $ makeCompiling with +pic Creating shared librariesLinking with -b Using the C preprocessorProcessing cpp directives Using the C preprocessorExample 13 Example 2-9 cppdirect.f90 $ f90 +cpp=yes -D Debug cppdirect.f90Creating demand-loadable executables Creating shared executablesSaving the cpp output file Using environment variables Compiling in 64-bit mode$ f90 +noshared prog.f90 HP Fortran environment variablesSTF90COM64 environment variable F90ROOT environment variableHPF90OPTS environment variable $ f90 +list hello.f90Floating installation Floating installationLpath environment variable Mpnumberofthreads environment variableAlternate-path/opt/fortran90.3.6.1 Setting up floating installationDisabling implicit typing Controlling data storageAutomatic and static variables Disabling implicit typingControlling data storage ContainsIncreasing the precision of constants Increasing default data sizes Increasing default data sizesIncreasing default data sizes Sharing data among programs Usr/lib/libpthread.slWhich creates multiple threads Sharing data among programs $ gotosleepModules vs. common blocks $ wakeupIm up Modules vs. common blocks Using the HP WDB debugger DebuggingStripping debugging information Signal Signals recognized by +fpexceptionHandling runtime exceptions Floating-point exceptionsBus error exception Floating-point exceptions= 1.0/0.0 Segmentation violation exception Illegal instruction exceptionBad argument exception Using debugging linesExceptions handled by the on statement Using the on statementOn REAL8 DIV 0 Call divzerotrap Exceptions handled by the on statementActions specified by on On Double Precision DIV 0 Call divzerotrapExceptions handled by the on statement Terminating program execution Ignoring errorsExample 14 Example5-1 abort.f90 Example 15 Example5-2 ignore.f90Trapping floating-point exceptions Calling a trap procedureTrapping integer overflow exceptions On Double Precision Overflow Call trapTrapping +Ctrl-C trap interrupts Allowing core dumpsExample 17 Example5-4 callitrap.f90 On Real Overflow Ignore Example 18 Example 5-5 allowcore.f90Using profilers Using profilersPerformance and optimization HP CaliperOpt/ansic/bin/cc -Aa +O3 -o program +Oprofile=collect Comparing Program PerformanceProgram.c ProgramprogramargumentsGprof Using Options to Control Data CollectionSpecifying PBO file names and locations $ gprof prog gprof.outUsing +O to set optimization levels Using options to control optimizationProf $ f90 +O4 file.f90+O2, -O Using the optimization options+O3 +O4$ f90 +02 +Oaggressive +Osize prog.f90 Fine-tuning optimization options$ f90 +O4 +Oaggressive +Ofltacc prog.f90 Packaged optimization options+Ofastaccess at level Is +Onofastaccess at+O2 +Ofltacc=relaxed+Ofltacc=relaxed . This Fast+Onoinitcheck +Onolibcalls +Oinlinelevel num+Olibcalls +Onoloopunroll=n+Opipeline +Onoparminit+Orecovery +Onoreturn +Oregreassoc+Oshortdata=8 +Ovectorize option onConservative vs. aggressive optimization +Onowholeprogrammode+Owholeprogrammode Parallelizing HP Fortran programs Conservative, aggressive, and default optimizationsCompiling for parallel execution F90 +O3 +Oparallel -c x.f90 y.f90 F90 +O3 -c z.f90Profiling parallelized programs Performance and parallelizationConditions inhibiting loop parallelization Calling routines with side effects parallellizationData dependences Indeterminate iteration countsVectorization Using the +Ovectorize optionF90 +O3 +Ovectorize prog.f90 Vector routines called by +OvectorizeSaxpy Controlling vectorization locallySdot VecdmultaddExample 19 Example 6-1 axpy.f90 Calling Blas library routinesREAL, External sdot Industry-wide standard VectorizationControlling code generation for performance Writing HP-UX applications Accessing command-line arguments$ fprog arg1 another arg Example 20 Example 7-1 getargs.f90Stream I/O using Fstream Using HP-UX file I/OPerforming I/O using HP-UX system calls Calling HP-UX system and library routinesObtaining an HP-UX file descriptor Using HP-UX file I/OCalling C routines from HP Fortran Data typesData type correspondence for HP Fortran and C Logicals Unsigned integersSize differences between HP Fortran and C data types Size differences after compiling with +autodblComplex numbers Complex sqrcomplexCOMPLEX cmxvalExample 21 Example 8-1 passcomplex.f90 Derived types Argument-passing conventionsPointers Example 22 Example 8-2 sqrcomplex.cCase sensitivity Integer ptr INTEGER, DIMENSION100 iarrayVoid fooint *ptr, int iarray100, int Call foo%REFptr, %REFiarray, %VALi$HP$ Alias bubblesort = BubbleSort%REF,%VAL Example 23 Example 8-3 sortem.cExample 24 Example 8-4 testsort.f90 Case sensitivityREAL, DIMENSION2,3,4 Memory layout of a two-dimensional array in Fortran and CArrays IntExample 26 Example 8-6 getarray.c Example 25 Example 8-5 passarray.f90Null-terminated string StringsFortran hidden length argument Passing a stringStrings Following are example C and Fortran programsFile handling Example 27 Example 8-7 passchars.f90Example 28 Example 8-8 getstring.c File handling Example 29 Example 8-9 fnumtest.f90Int somedata Sharing dataExtern int somedata Extern int globals100Using HP Fortran directives Using Fortran directivesDirective syntax HP Fortran directivesDescription and restrictions Syntax$HP$ Alias name = external-name arg-pass-mode-list NameLocal and global usage Case sensitivityArgument-passing conventions For more information StringsExample 31 Example 9-1 prstr.c Example 32 Example 9-2 passstr.f90Specified on the command line Disables the inclusion of source lines in the listing fileExample 33 Example Listing fileControlling vectorization Compatibility directivesCompatibility directives recognized by HP Fortran Vendor Directive CrayControlling dependence checks Controlling parallelizationControlling checks for side effects Compatibility directivesUsing Fortran directives Migrating to HP Fortran Command-line options not supportedIncompatibilities with HP Fortran Compiler limitsFloating-point constants Format field widthsIntrinsic functions Double Precision x =Data types and constants Procedure calls and definitionsDirectives Input/outputFoo**REALbar, 8 ! foo**bar KEY=Source code issues Migration issuesMigration issues MiscellaneousHP Fortran 77 directives supported by f90 options DirectivesIntrinsic functions Command-line option issuesConflicting intrinsics and libU77 routine names F77 options supported by f90Data file issues Object code issuesHP-supplied migration tools Approaches to migration$ fid +800 file.f $ fid +es program.f Compatibility extensions Porting to HP FortranCompatibility statements END structure definitionCompatibility directives Compiler directivesPointer Cray-style +Oparallel orNonstandard intrinsic procedures in HP Fortran Intrinsic proceduresDirective prefixes recognized by HP Fortran +Oparallel or +OvectorizeUninitialized variables Using porting optionsLarge word size Using porting optionsOne-trip do loops $ f90 testloop.f90Name conflicts Example 34 Example 11-1 clash.f90External int1 Source formats Names with appended underscoresPorting from Tru64 to HP Fortran Escape sequences+cfc New options EnhancementsNof66alternate for +noonetrip Porting from Tru64 to HP Fortran+nopadsrc Altparam Check noboundsoptions for example, -nocheckboundsInteroperability with C Fortran 2003 FeaturesInput/output enhancements Miscellaneous enhancementsObject orientation features Fortran 2003 FeaturesData enhancements 153 Documentation FeedbackGlossary Glossary155 So on. See also row-major orderAlso filename extension 157 Memory faultSee ttv Symbols Index159