PathScale

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

Sommaire

Description

Pathscale est une solution propriétaire complète pour l'utilisation d'architectures multicœurs. Celle-ci vient avec une suite de compilateurs C (pathcc), C++ (pathCC) et Fortran (pathf90, pathf95) et avec certains autres outils, tel un dévermineur (pathdb) et un assembleur (pathas). Une documentation complète est disponible sur le site de Pathscale.

Avantages et inconvénients

Le site officiel est bien documenté avec des exemples de compilation pour plusieurs outils. La série de compilateurs peut être utilisée pour des architectures Intel, AMD ou des GPGPU Nvidia. Par contre, c'est une solution qui requiert une licence. De plus, la version de BLAS venant avec la suite PathScale est celle de ACML, donc elle est peu performante. Toutefois, il est facile de compiler un code en utilisant la version BLAS de MKL.

Une autre caractéristique est que, contrairement à Intel, PathScale vient avec sa propre version de la bibliothèque standard C++. Cette dernière est moins à jour avec la nouvelle norme C++11 que ne l'est la version 4.7 de GCC.

En ce qui concerne OpenMP, PathScale suit la norme 2.5. Il est un peu en retard sur la version 4.7 de GCC qui inclut la majorité des éléments de la norme 3.0.

L'un des avantages majeurs de Pathscale est la performance du code produit sur les processeurs AMD. Nous avons observé des comparaisons avec PGI et GCC semblables à celles rapportées sur le site de Pathscale. Toutefois, certains codes n'offrent pas de gain de performance. De plus, les compilateurs d'Intel offrent des performances similaires, et ce, même sur les architectures AMD.

Options de compilation

Les compilateurs de PathScale utilisent les options de compilation génériques telles que -g, -c et -I. Voir la documentation sur la page Compilation de code. Nous ne présentons ici qu'une courte liste d'options supplémentaires, les plus utiles.

Option Description Exemple
-help Affiche la liste des options de compilation.
pathcc -help ...
-static, -Bstatic Lie les binaires compilés (objets et bibliothèques) à l'application de manière statique.
pathcc -static ...
-ffast-math Optimise la performance d'opérations à virgule flottante en négligeant des règles ANSI et IEEE.
pathcc -ffast-math ...
-msse3, -msse4a Permet l'ajout d'instructions SSE3 ou SSE4a pour la vectorisation d'instructions.
pathcc -msse3 ...
-ipa Active l'optimisation inter-procédurale.
pathcc -ipa ...
-mp Active le traitement des directives OpenMP (norme 2.5 dans la version 4)
pathcc -openmp ...
-show Affiche chaque opération en détails (précompilation, compilation, assemblage, édition de liens)
pathcc -show ...
-v Similaire à -show, mais affiche également la version du compilateur.
pathcc -v ...
-keep Ne détruit pas les fichiers temporaires après compilation (fichiers .i (precompilés) et .s (assembleurs))
pathcc -keep ...
-ar Plutôt que de créer un exécutable, crée une archive avec les fichiers objets.
pathcc -ar ...

Options spécifiques à Fortran

Option Description Défaut
-fixedform Indique que le code source respecte le format fixe de Fortran 77

(colonnes 1 à 6 réservés, colonnes 7 à 72 pour les instructions).

Pour les fichiers .f et .F
-freeform Indique que le code source respecte le format libre. Pour les fichiers .f90, .f95, .F90 et .F95.
-cpp Utilise le préprocesseur C (cpp) Pour les fichiers .F, .F90, .F95
-ftpp Utilise le préprocesseur Fortran traditionnel Jamais
-fcoco Utilise le péprocesseur ISO/IEC 1539-3 Jamais

Options spécifiques à C, C++

Option Description Défaut
(-no)-pathcc Définit (ou non) la macro __PATHSCALE__ La macro est définie
-std=valeur Définit à quelle norme se conformer. Les valeurs peuvent être : c89, c99, c9x, gnu89, gnu99, gnu9x, iso9899:1990, iso9899:1999, iso9899:199x

Options suggérées

Il est recommandé d'utiliser les options: « -O2 -msse3 ». Si votre code est très peu sensible à la précision, vous pouvez remplacer le -O2 par -O3 et s'il n'est pas sensible du tout, ajoutez -ffast-math.

Pour un code parallèle OpenMP

L'option -mp est alors requise. La compilation indiquera quelle boucle est parallélisée. Si une boucle n'est pas parallélisée, vous pouvez essayer de l'écrire différemment puis ressayer de compiler le code. Pour plus d'information, voyez notre documentation sur OpenMP.

[nom@serveur $] pathcc -msse3 -mp f1.c f2.c -o f.out -lpthread


Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager