Intel est surtout connu pour ses processeurs, mais aussi pour ses outils de développement, notamment pour le calcul de haute performance avec sa suite Parallel Studio XE, dont la version 2018 vient de sortir. Ces logiciels visent le développement d’applications hautement parallèles, afin d’exploiter tous les cœurs des processeurs modernes à leur plus haut potentiel, mais aussi l’entièreté des nœuds de calcul d’un superordinateur. La suite contient notamment des compilateurs C++ et Fortran, des bibliothèques de haute performance (MKL, IPP, DAAL, etc.), ainsi que des outils d’analyse de performance et de débogage.
Les points principaux de cette nouvelle version concernent l’utilisation des instructions AVX-512, disponibles uniquement sur certaines gammes de processeurs (certains Xeon de dernière génération et les Xeon Phi). Les outils d’analyse sont plus poussés, comme chaque génération. Les compilateurs respectent les normes plus récentes de manière complète : C++14 au complet (C++17 en partie, officiellement finalisée depuis peu), Fortran 2008 au complet (Fortran 2015 en partie, toujours en cours de développement), OpenMP 5.0 en partie.
[h=2]Langages[/h]
Le compilateur C++ se met au goût du jour avec la norme C++14. Parmi les fonctionnalités de C++17 déjà implémentées, on compte l’implémentation parallèle de la STL — ce qui se comprend, vu que l’objectif est d’avoir un code aussi parallèle que possible. L’idée est d’exécuter les différents algorithmes de la STL en parallèle, en changeant un seul paramètre. Bien évidemment, l’implémentation repose sur TBB, la bibliothèque d’Intel pour le calcul multifil. Malgré leur statut d’avant-gardistes en ce qui concerne les évolutions de C++, ni GCC ni Clang ne disposent de cette fonctionnalité. D’autres apports de C++17 sont aussi implémentés. À un niveau proche, la norme C11 est également gérée.
L’optimisation exploitant les profils (PGO) pointe également le bout de son nez. Elle exploite une trace d’exécution récupérée par VTune Amplifier (en utilisant les compteurs matériels des processeurs) pour décider les parties du code qui bénéficieront le plus des efforts d’optimisation, mais aussi pour déterminer certaines statistiques sur l’exécution du code (comme les branchements) pour certaines décisions d’optimisation.
Pour OpenMP, de nouvelles clauses sont implémentées, en suivant les développements de la version 5.0 de la norme, plus spécifiquement pour la gestion des tâches (TASK_REDUCTION, REDUCTION, IN_REDUCTION). Plus de constructions d’OpenMP 4 sont disponibles.
[h=2]Bibliothèques de calcul[/h]
La MKL (math kernel library) s’oriente historiquement vers les opérations souvent requises par le calcul scientifique : algèbre linéaire, notamment creuse, transformée de Fourier, etc. Cette nouvelle version apporte un lot de fonctionnalités pour les réseaux neuronaux profonds, plus spécifiquement les opérations de convolution (pour les réseaux convolutionnels) et de produit scalaire. Les opérations BLAS entre entiers sont aussi développées, notamment de par leur utilité dans l’apprentissage profond (les nombres à virgule flottante sont remplacés par des entiers pour faciliter certains calculs).
Les IPP (integrated performance primitives) sont à l’opposé de la MKL : il s’agit d’algorithmes de bien plus haut niveau (compression, cryptographie, traitement d’images, etc.). Ainsi, la nouvelle version apporte une implémentation de l’algorithme de compression LZ4. L’API de GraphicsMagick a été répliquée pour de nouvelles fonctions pour redimensionner et flouter les images. Côté cryptographique, de nouvelles fonctions sont disponibles pour les courbes elliptiques.
La DAAL (data analytics acceleration library) est la dernière arrivée du lot. Elle est prévue pour l’exploitation des données, notamment l’apprentissage automatique. La version 2018 s’ouvre aux arbres de décision, ainsi qu’aux forêts, tant en classification que régression. Les couches disponibles pour les réseaux neuronaux s’enrichissent d’une addition membre à membre. Une série de nouveaux exemples montre l’intégration avec Spark MLib. La distribution Python d’Intel utilise notamment la DAAL pour accélérer une série d’opérations de scikit-learn.
De manière générale, les instructions AVX-512 sont utilisées très régulièrement. Aussi, les processeurs trop anciens ne sont plus gérés (comme les Pentium III, d’avant l’an 2000) — étonnement, la première génération de Xeon Phi n’est plus au goût du jour, entièrement remplacée par la seconde.
[h=2]Outils d’analyse et de débogage[/h]
Advisor a été le plus retravaillé de tous les outils de la suite Intel. Il montre une série d’optimisations possibles du code, notamment au niveau de la vectorisation. La simulation des caches est arrivée en préversion. En effet, une mauvaise utilisation des caches d’un processeur peut faire s’écrouler la performance d’une application : le processeur doit alors chercher régulièrement des données en mémoire, plutôt que de réutiliser son cache. Quand cette fonction est activée, elle montre, dans les rapports, pour chaque boucle, le nombre d’opérations effectuées en mémoire et celles qui ne peuvent se faire depuis le cache.
Une nouveauté arrivée entre les versions 2017 et 2018 est l’analyse “sous les combles”. Il s’agit d’une visualisation de la performance d’une application selon les limitations matérielles, notamment la bande passante disponible vers la mémoire. Ce graphique présente la performance (en opérations effectuées par seconde) par rapport à l’intensité arithmétique (le nombre d’opérations effectuées par octet de données). Selon le niveau de cache utilisé, on peut déterminer un maximum d’opérations que l’on peut effectuer par seconde, étant donné la bande passante disponible pour se niveau de cache : si l’application est très proche de la limite pour le premier niveau de cache (le plus rapide), c’est qu’elle utilise le processeur au mieux. L’idée est donc de voir facilement où se situent les points faibles.
Sources : notes de version de la suite, du compilateur C++, du compilateur Fortran, de la MKL, des IPP, de la DAAL, de la distribution Python, d’Advisor ; Intel Advisor Roofline.
Sortie d'Intel Parallel Studio XE 2018
Avec une gestion complète de C++14, de la STL parallèle de C++17 et de Fortran 2008
Sortie d'Intel Parallel Studio XE 2018
Avec une gestion complète de C++14, de la STL parallèle de C++17 et de Fortran 2008
Le , par dourouc05
Une erreur dans cette actualité ? Signalez-nous-la !