IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

29PARTAGES

8  0 
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.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de RyzenOC
Inactif https://www.developpez.com
Le 13/09/2017 à 15:01
Citation Envoyé par abbe2017 Voir le message
cet outil de développement m'intéresse depuis le début, seulement y-a-t-il intérêt en france ?

je n'ai jamais vu une seule offre d'emploi en 5ans qui indiquait cela en pré-requis.

il semble destiné au salariat étranger...
je l'utilise tous les jours. Cette suite contient des compilateurs optimisé et des api optimisé. Il est quasi indispensable si utilise des xeon phi.
La mkl est lui aussi indispensable pour tous ce qui touche aux calcules matriciels.

Cette suite s'adresse aux domaines liées aux calcules intensifs (sur des cpu intel vous imaginez bien). Mais a noter que meme sur de l'amd le compilateur intel est plus performant que GCC/clang...etc
Intel fournie aussi une version de Python optimisé pour leurs cpu.

Tu ne le voit jamais sur des offres d'emplois car cette suite "n'est qu'un compilateur", c'est pas un langage de programmation ou un IDE a maîtriser. d’ailleurs je vois peu d'offre qui demande de maîtriser un ide ou un compilateur en particulier, cela s’apprend sur le tas.
1  0 
Avatar de abbe2017
Membre confirmé https://www.developpez.com
Le 13/09/2017 à 9:27
cet outil de développement m'intéresse depuis le début, seulement y-a-t-il intérêt en france ?

je n'ai jamais vu une seule offre d'emploi en 5ans qui indiquait cela en pré-requis.

il semble destiné au salariat étranger...
0  0 
Avatar de abbe2017
Membre confirmé https://www.developpez.com
Le 13/09/2017 à 16:32
Citation Envoyé par RyzenOC Voir le message
je l'utilise tous les jours. Cette suite contient des compilateurs optimisé et des api optimisé. Il est quasi indispensable si utilise des xeon phi.
La mkl est lui aussi indispensable pour tous ce qui touche aux calcules matriciels.

Cette suite s'adresse aux domaines liées aux calcules intensifs (sur des cpu intel vous imaginez bien). Mais a noter que meme sur de l'amd le compilateur intel est plus performant que GCC/clang...etc
Intel fournie aussi une version de Python optimisé pour leurs cpu.

Tu ne le voit jamais sur des offres d'emplois car cette suite "n'est qu'un compilateur", c'est pas un langage de programmation ou un IDE a maîtriser. d’ailleurs je vois peu d'offre qui demande de maîtriser un ide ou un compilateur en particulier, cela s’apprend sur le tas.
oui mais ça compile pour une puce dédiée INTEL, c'est à dire de la programmation orentiée "final hardware" et en france, bun....je ne sais pas si une entreprise fait ça. peut-être pour les appareils de médecine.
0  0 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 13/09/2017 à 16:35
Il faut aussi voir le domaine des offres d'emploi : ces outils sont assez spécifiques, peu de développeurs ont un intérêt à les utiliser. Pour pas mal de tâches, gagner quelques pour cent en performance à l'exécution n'a aucun intérêt (et encore, le compilateur Intel est parfois moins bon que les traditionnels, selon les tâches : https://stackoverflow.com/questions/...mpiler-and-gcc, même si une étude plus récente ne ferait pas de mal).

Citation Envoyé par abbe2017 Voir le message
oui mais ça compile pour une puce dédiée INTEL, c'est à dire de la programmation orentiée "final hardware" et en france, bun....je ne sais pas si une entreprise fait ça. peut-être pour les appareils de médecine.
Et tous ceux qui utilisent des supercalculateurs, comme Total.
0  0