C'est l'option -O (la lettre majuscule O) qui permet de gérer l'optimisation
d'un code. À sa suite, il est possible d'indiquer un niveau
d'optimisation (0 ou entre 2 et 5). L'option -O0,
équivalente à -qnooptimize, permet d'inhiber l'optimisation
faite par le compilateur. L'écriture -O est
équivalente à -O2.
À partir du niveau 3, la sémantique du programme peut être
modifiée. Par exemple : (2.*3.1)*4.2 peut être interprété
comme 2.*(3.1*4.2). Soyez donc très vigilant quant aux
résultats de vos calculs. Il est possible d'interdire toute
modification sémantique en positionnant l'option
-qstrict. Le couple d'options -O3 -qstrict,
par exemple, donne un niveau d'optimisation intermédiaire entre
-O2 et -O3.
Les niveaux -O4 et -O5 introduisent des
optimisations relativement poussées. Elles incluent en particulier la
technique de l'inlining si l'option -qipa est
spécifiée à l'édition de liens également.
Un niveau d'optimisation maximal peut être atteint avec les options
-O5 -qnostrict -qessl à la compilation et -O5
-qnostrict -lessl à l'édition de liens. L'option
-O5 inclue les options -qipa=level=2 et
-qhot=vector. L'option -qunroll est inclue
dès le niveau -O3. Les options -qhot=vector
et -qunroll permettent respectivement d'utiliser les
versions vectorielles de certaines fonctions mathématiques et de
dérouler, quand cela est possible, les boucles imbriquées.
Important : à l'IDRIS, les options -O3 -qstrict sont
positionnées par défaut. Nous vous conseillons, lorsque votre programme a été
suffisamment testé, lorsque vous avez bien vérifié les résultats sur des cas
tests, de passer au niveau d'optimisation 3 complet, en indiquant
-qnostrict dans vos options de compilation. L'accélération peut
être significative.
L'option -qessl (-qnoessl par défaut)
permet le remplacement automatique de procédures intrinsèques Fortran
(comme MATMUL par ex.) par des appels à des fonctions de
la bibliothèque IBM ESSL particulièrement optimisée. Avec cette option
à la compilation, vous devez obligatoirement spécifier
-lessl ou bien -lesslsmp à l'édition de
liens.
Une documentation IBM spécifique pour l'optimisation sur Power6 est disponible en anglais (.pdf), avec de nombreux schémas de l'architecture du processeur; elle revient sur les options de compilation.
Une documentation IBM fait une synthèse sur les différentes options d'optimisation; elle est disponible en anglais (.pdf) et date de la version xlf 13.1 (avril 2010).