HP Fortran Programmer Guide (766160-001, March 2014)

Description and restrictions
The $HP$ OPTIMIZEdirective allows you to determine which areas of your program that the
optimizer will process. Specifying $HP$ OPTIMIZE OFFcauses the following source lines not to
be optimized. $HP$ OPTIMIZE ONre-enables optimization for the following source lines.
This directive is effective only if you have used either the -Onor +Onoption when you compiled the
program. If you have not specified either option, both $HP$ OPTIMIZE ONand $HP$ OPTIMIZE
OFFwill give you level 0 optimization.
The following are supported:
!HP$ OPTIMIZE ON
!HP$ OPTIMIZE OFF
!HP$ OPTIMIZE level 1
!HP$ OPTIMIZE level 0
!HP$ OPTIMIZE level 2
!HP$ OPTIMIZE level 1 on
!HP$ OPTIMIZE level 0 on
!HP$ OPTIMIZE level 2 on
!HP$ OPTIMIZE level 1 off
!HP$ OPTIMIZE level 0 off
!HP$ OPTIMIZE level 2 off
!HP$ optimize assume_no_parameters_overlaps on
!HP$ optimize assume_no_parameters_overlaps off
Compatibility directives
HP Fortran supports the compiler directives listed in Table 9-2. These directives are provided for
compatibility with programs developed on the platforms listed in the table.
Table 36 Compatibility directives recognized by HP Fortran
DirectiveVendor
DIR$ NO SIDE EFFECTSCray
DIR$ [NO]CONCUR
DIR$ IVDEP
FPP$ NODEPCHK
*$* [NO]CONCURRENTIZEKAP
*$* [NO]VECTORIZE
VD$ NODEPCHKVAST
In fixed format, each directive must be preceded by the comment character C, !, or *and must
begin in column 1 of the source file. In free format, the directive must be preceded by the Fortran
comment character(!).
If an option or argument is included with the directive name, the compiler ignores the directive.
The following sections describes these directives in detail.
Controlling vectorization
HP Fortran can vectorize eligible program loops that operate on vectors. This optimization causes
the compiler to replace the loops with calls to selected routines in the Basic Linear Algebra Subroutine
(BLAS) library. You can use the *$*[NO]VECTORIZEdirective to enable or disable vectorization.
The compiler considers the *$* VECTORIZEdirective as a request to vectorize a loop. If the
compiler determines that it cannot profitably or safely vectorize the loop, it ignores the directive.
To use the vectorization directive, you must compile and link with the +Ovectorizeoption. The
directive applies to the beginning of the next loop and remains in effect for the rest of the program
128 Using Fortran directives