Vargas : options d'optimisation du compilateur Fortran


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).


© CNRS - IDRIS, 13/01/2012