Loop Nest Optimizer
LNO performs loop restructuring to optimize data access:
- loop interchange
- loop unrolling
- loop blocking for cache
- loop fusion
- loop fission
- pre-fetching
LNO is controlled with compiler options and/or compiler directives or pragmas; same options for both
- LNO is the default at -O3, but can be turned on/off individually by -LNO:opt=[1|0]
- directives/pragma syntax:
- Fortran: C*$* keyword [=value(s)]
- C/C++ : #pragma keyword [=value(s)]
-
- directives/pragmas can be disabled with the compiler switch -LNO:ignore_pragmas