HP Fortran Programmer's Guide (March 2010)

vii
Contents
5. Using the ON statement
Exceptions handled by the ON statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Actions specified by ON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Terminating program execution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Ignoring errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Calling a trap procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Trapping floating-point exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Trapping integer overflow exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Trapping +Ctrl-C trap interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Allowing core dumps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6. Performance and optimization
Using profilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
HP Caliper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Invoking HP Caliper with the compiler to optimize your program . . . . . . . . . . . 145
Comparing Program Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Using Options to Control Data Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Specifying PBO file names and locations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
gprof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
prof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Using options to control optimization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Using +O to set optimization levels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Using the optimization options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Conservative vs. aggressive optimization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Parallelizing HP Fortran programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Compiling for parallel execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Performance and parallelization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Profiling parallelized programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Conditions inhibiting loop parallelization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Calling routines with side effects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Indeterminate iteration counts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Data dependences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Vectorization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Using the +Ovectorize option. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Controlling vectorization locally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Calling BLAS library routines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174