Using high-order loop analysis and transformations

High-order transformations are optimizations that specifically improve the performance of loops through techniques such as interchange, fusion, and unrolling. The goals of these loop optimizations include:

To enable high-order loop analysis and transformations, you use the -qhot option, which implies an optimization level of -O2. The following table lists the suboptions available for -qhot.

Table 12. -qhot suboptions
suboption Behavior
level=1 This is the default suboption if you specify -qhot with no suboptions. This level is also automatically enabled if you compile with -O4 or -O5. This is equivalent to specifying -qhot=vector and, where applicable, -qhot=simd.
level=0 Instructs the compiler to perform a subset of high-order transformations that enhance performance by improving data locality. This suboption implies -qhot=novector, -qhot=noarraypad, and -qhot=nosimd. This level is automatically enabled if you compile with -O3.
vector When specified with -qnostrict and -qignerrno, or -O3 or a higher optimization level, instructs the compiler to transform some loops to use the optimized versions of various math functions contained in the MASS libraries, rather than use the system versions. The optimized versions make different trade-offs with respect to accuracy and exception-handling versus performance. This suboption is enabled by default if you specify -qhot with no suboptions.
arraypad Instructs the compiler to pad any arrays where it infers there might be a benefit and to pad by whatever amount it chooses.
simd Instructs the compiler to attempt automatic SIMD vectorization; that is, converting certain operations in a loop that apply to successive elements of an array into a call to a VMX instruction. This call calculates several results at one time, which is faster than calculating each result sequentially. This suboption is enabled by default on Linux if you set -qarch to a target architecture that supports VMX instructions (and -qenablevmx is in effect, which it is by default).