Intel

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

La suite de compilateurs d'Intel est un ensemble de compilateurs C (icc), C++ (icpc) et Fortran (ifort) développée par Intel.

Sommaire

Avantages et inconvénients

La suite de compilateur d'Intel est un logiciel propriétaire nécessitant l'achat d'une licence. En tant que fabriquant de processeurs, Intel est capable parfois d'offrir le support d'optimisations matérielles plus rapides que d'autres suites de compilation. Cela est particulièrement vrai sur les architectures récentes. Les compilateurs d'Intel offrent ainsi souvent (mais pas toujours) des performances supérieures à celles offertes par d'autres compilateurs, particulièrement lors de l'exécution sur des processeurs Intel. Étant donné les meilleures performances, tous les superordinateurs de Calcul Québec rend cette suite disponible aux utilisateurs.

Options de compilation

Une liste des options de compilation génériques à tous les compilateurs est disponible sur la page Compilation de code.

Options spécifiques aux compilateurs d'Intel

Option Description Exemple
-xHost Active les optimisations spécifiques à l'architecture sur laquelle le code est compilé, telles que les instructions SSE des processeurs Intel.
icc -xHost ...
-static, -Bstatic Lie les binaires compilés (objets et bibliothèques) à l'application de manière statique.
icc -static ...
-ipo Active l'optimisation inter-procédurale.
icc -ipo ...
-openmp Active le support des directives OpenMP
icc -openmp ...
-no-prec-div Active des optimisations mathématiques agressives au niveau de la division qui peuvent accélérer le code de façon importante, mais qui ne garantissent plus le respect des normes IEEE pour les divisions.
icc -no-prec-div ...

Options spécifiques au compilateur Fortran

Option Description Exemple
-72, -80, -132 Fixe la longueur maximale des lignes de code égale à 72, 80 ou 132 caractères lorsque le format fixe est utilisé (Fortran 77)
ifort -132 ...
-FI, -fixed Spécifie que les fichiers sont en format avec lignes de longueurs fixe.
ifort -fixed ...
-FR, -free Spécifie que les fichiers sont en format "libre".
ifort -free ...
-u Oblige la déclaration explicite de toutes les variables.
ifort -u ...

Options recommandées

Il est recommandé d'utiliser les options -O2 -xHost. L'option -O2 peut être remplacée par -O3 qui ajoute des optimisations supplémentaires à la compilation. Alors que -O2 est généralement plus rapide que -O1, il arrive que -O3 produise un code moins performant que -O2.

Optimisation inter-procédurale

En général, les logiciels sont compilés un fichier à la fois et les fichiers sont liés ensemble à la fin du processus. L'optimisation inter-procédurale permet au compilateur de faire des optimisations en ayant accès à l'arbre syntaxique de tous les fichiers source en même temps. Pour ce faire, l'optimisation des représentations intermédiaires est faite à la liaison [1] [2] [3] [4]

Pour utiliser l'optimisation à la liaison avec les compilateurs d'Intel, utiliser l'option -ipo :

[nom@serveur $] icc -ipo -xHost -O2 -Wall f1.c f2.c  -o f.out


Compilation de code OpenMP

Pour activer l'exécution de fils d'exécution en parallèle via OpenMP, vous devez ajouter l'option -openmp. Par exemple :

[nom@serveur $] icc -ipo -xHost -O3 -Wall -openmp f1.c f2.c -o f.out



Références

  1. https://en.wikipedia.org/wiki/Link-time_optimization
  2. http://gcc.gnu.org/onlinedocs/gccint/LTO.html
  3. http://gcc.gnu.org/wiki/LinkTimeOptimization
  4. http://www.phoronix.com/scan.php?page=article&item=gcc_471_lto&num=1
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager