• Aucun résultat trouvé

Intel Xeon-Phi Coprocessor

En septembre 2011, le centre de calcul haute performance du Texas (The Texas Advanced Com- puting Center i.e. TACC) a annoncé qu’il fonctionnerait désormais à partir de la nouvelle carte de calcul d’Intel - Intel Xeon Phi Coprocessor -, illustrée sur la figure 5.1. Un supercalcula-

teur visant les 10 petaFlops4. puissance de calcul faisant l’un des plus puissants calculateur

au monde. Le calculateur fournissait auparavant 2 petaFlops de puissance de calcul à partir d’une grille de CPUs, l’ajout des cartes accélératrices d’Intel permettant 8 petaFlops supplé- mentaires. En juin 2013, le supercalculateur Tianhe-2 du centre nationale de calcul de haute performance à Guangzhou (NSCC-GZ) est devenu le calculateur le plus puissant au monde, utilisant la combinaison des cartes Intel Ivy-BridgeEP Xeon et Xeon Phi Coprocessors pour cul- miner à 34 petaFlops. En juin 2016, le Sunway TaihuLight franchit la barre symboliques des 100 petaFlops ce qui le place à la tête des calculateurs les plus puissants. Pour revenir dans la course, les américains ainsi que les européens ont lancé deux projets visant à atteindre l’exaFlops de puissance de calcul à partir d’architecture hybride.

Figure 5.1: La carte Intel Xeon Phi Coprocessor.

L’architecture d’Intel MIC5 combine ensemble plusieurs processeurs de CPUs d’Intel sur

une même puce, c’est une architecture dédiée exclusivement au calcul haute performance et plus précisément au calcul scientifique. Cette architecture permet de calquer facilement des algorithmes dits massivement parallèles sur la grille de calcul. Dans notre cas, l’évaluation d’un portefeuille de produits dérivés par des méthodes de Monte Carlo. Dans le format de double de précision flottante, le performance maximale observée est de 1.2 teraFlops (DP) pour un seul

4Nombre d’opérations en virgule flottante par seconde, ce qui est équivalent à 1016opérations par seconde. 5Many Integrated Core, défini dans Jeffers [102].

5.3. Intel Xeon-Phi Coprocessor

Xeon Phi Coprocessor. La carte n’est pas directement intégrée sur la carte mère, elle est jusqu’à

présent seulement disponible à travers un port PCI6mais il offre une bande passante très large

de 353 Gb/s consommant 300 watt pour 32 Go de capacité de mémoire type GDDR57avec un

pic de vitesse àe 5.5 GT/s pour les dernières configurations. L’Intel Xeon Phi Coprocessor peut

embarquer son propre système d’exploitation, supporte les protocoles de parallélisation MPI8 et

openMP9, accepte l’adressage IP.

L’intel Xeon Phi Coprocessor peut proposer des configurations jusqu’à 61 cœurs (unité de calcul vectoriel) basés sur l’architecture de la famille des processeurs Intel Pentium, description

dans le manuel d’Intel10. Les processeurs sont cadencés à 1.238 GHz, ce qui n’est pas excessifs

mais la performance est dans le nombre de processeurs engravés sur une même puce. Intel utilise une gravure à 14 nm, ce qui permet de produire des puces comportant plus de 50 cœurs. Chaque cœur physique permet de récupérer et de décoder 4 fils d’instructions simultanément ce qui, pour la configuration la plus lourde, gère jusqu’à 244 fils d’instructions. L’intel Xeon Phi Coprocessor tourne sur un environnement 64 bit, fournit la compatibilité pour l’architecture x86 et supporte

les set instructions IEEE 75411 pour l’arithmétique en virgule flottante. La carte est munit d’un

environnement très flexible pour le développement d’applications. Chaque cœur est connecté à un

anneau d’interconnexion à travers le protocole Core Ring Interface12(cf. schéma de l’architecture

sur la figure 5.2), qui comprend le cache L2 de 512 Kb. Cette interface permet d’exécuter 2

instructions par cycle, sur le U-pipe (détails dans le manuel d’Intel cité pr´éc´édemment) et le

V-pipe mais certaines ne peuvent pas être exécutées sur cette dernière (comme les instructions vectorielles). Chaque cœur a un support de calcul de haute précision et optimisé pour les fonctions mathématiques i.e. racine carrée, exponentielle, logarithme, puissance, réciproque etc. . . Des fonctions spéciales liées à la gestion de mémoire (scatter, gather et streaming store) sont très efficaces. Les cœurs comprennent les instructions du cache L1 et du data cache (32 Kb pour chacun des caches). Chaque cœur est muni de registres vectoriels de 32 R12 bit.

Malheureusement, la carte ne supporte pas les instructions Intel SIMD13 comme MMX14,

SSE15, SSE2, SSE3, SSSE3 SSE4.1 et SSE4.2, ni les instructions AVX16 donc la portabilité du

code n’est pas direct mais Intel fournit un nouveau set d’instructions vectorielles. Ce set permet d’exécuter des instructions de calcul arithmétique par vecteur de 512 bit, et peut ainsi traiter simultanément 16 flottants en précision simple (SP) ou 8 en double précisions (DP). Chaque opération peut être une combinaison de multiplication et d’addition permettant de traiter 32 SP ou 16 DP par cycle. La plupart des instructions vectorielles a une latence de 4 cycle d’horloge et une cadence d’un cycle.

L’architecture Intel Xeon Phi Coprocessor implémente “seulement” les codes d’ applications en C, C++ et Fortran. Un des meilleurs avantages est qu’elle permet la compilation et l’exécution

6La carte est prise en charge comme un périphérique externe.

7Graphics Double Data Rate, mémoire pour carte graphique optimisée.

8Message passing interface, parallélisation à architecture comportant une mémoire distribuée voir Delage San-

tacreu [171].

9Langage de programmation permettant la parallélisation sur une architecture à mémoire partagée, protocole

décrit dans le manuel d’OpenMP (OpenMP Application Programming Interface, 2015, disponible à l’adresse suivante: http://www.openmp.org/wp-content/uploads/openmp-4.5.pdf)

10Pentium II Processor Developer’s Manual, 1997, disponible à l’adresse suivante: https://ftp.utcluj.ro/

pub/docs/publicatii/intel/pentiumII.pdf

11Norme de représentation pour les nombres à virgule flottante en binaire. 12Voir les documentations détaillées dans Chrysos [43], Jeffers [102] et Reed [161].

13Single instruction multiple data. Voir https://software.intel.com/sites/landingpage/IntrinsicsGuide/. 14Multiple Math eXtension, vecteur de 64 bit.

15Streaming SIMD eXtension, vecteur de 128 bit. 16Advanced Vector eXtension, vecteur de 256 bit.

Figure 5.2: L’architecture de l’Intel Xeon Phi Coprocessor.

d’un même code source qui s’exécute sur des CPUs standards. Il y a 3 (principalement 2) mode d’exécutions décrits dans Atanassov et al. [8], James [100] et Jeffers et Reinders [103]:

• mode d’exécution “natif” permet à l’utilisation de compiler le code source et d’exécuter

l’application générée directement sur le carte accélératrice, ce qui permet d’éviter les trans- ferts de données entre l’hôte et la carte. Le but principal étant que ce mode de fonc- tionnement n’implique aucun changement au niveau du code mais nécessite l’ajout de quelques options de compilation (-mmic). Il est possible d’utiliser l’intel Xeon Phi Co- processor comme un Intel Xeon mais la performance observée sera nettement plus faible. Effectivement, ce dernier est muni d’une architecture qui se concentre sur l’utilisation et l’optimisation de performance d’un seul cœur alors que la carte accélératrice se concentre sur la performance d’un nœud de cœurs. Les cœurs seuls sont beaucoup moins perfor- mants que ceux se trouvant sur l’Intel Xeon. Par exemple, MacCalpin dans McCalpin [131] stipule qu’il est préférable d’utiliser les CPUs pour faire tous les processus de lecture et d’écriture et de transférer les données sur la carte. Enfin pour utiliser ce mode, il faut que l’application soit en adéquation avec l’exécution native.

• mode d’exécution “offload”, le second mode principale d’exécution et qui est aussi considéré

comme un mode de programmation hétérogène. Une partie ou tous les processus de calculs sont déchargés sur la carte accélératrice mais l’application est exécutée sur le hôte. Sur l’exemple 5.1, la partie du code qui doit être chargée sur la carte se fait à l’aide d’une directive, il faudra tout de même envoyer les données nécessaires au calcul. Les directives

“in” et “out” permettent le transfert de données17.

f l o a t c a l l _ p r i c e = 0. f ;

17Il est seulement nécessaire de spécifier le transfert pour les tableaux et structures de données, les variables

Documents relatifs