Difference between revisions of "Xeon Phi"

From air
Jump to navigation Jump to search
(Base rapport)
 
(Replaced content with "Xeon phi est le nom comercial d'une gamme de coprocesseurs basés sur l'architecture MIC (Intel Many Integrated Core Architecture ou Intel MIC). Il possèdent une cinquant...")
 
Line 1: Line 1:
  +
Xeon phi est le nom comercial d'une gamme de coprocesseurs basés sur l'architecture MIC (Intel Many Integrated Core Architecture ou Intel MIC). Il possèdent une cinquantaine de coeurs x86 ainsi qu'une mémoire allant de 8 à 16 Go.
= Motivations =
 
Même si les processeurs deviennent de plus en plus puissants, leur performances sont
 
   
  +
[http://en.wikipedia.org/wiki/Intel_MIC Article Wikipedia]
limitées. Le plus rapide des processeurs actuels possède 6 unités de traitement pouvant
 
 
fonctionner jusqu’à environ 4Ghz et est spécialisé dans le traitement d’instructions séquentielles.
 
 
Dans le cas où le programmeur a besoin de faire exécuter la même tâche sur un
 
 
grand ensemble de données, il est plus performant de paralléliser le calcul pour gagner
 
 
en puissance plutôt que d’augmenter la fréquence de fonctionnement. En effet, pour
 
 
gagner en puissance sur une seule unit ́e de traitement il est nécessaire d’augmenter
 
 
la fréquence et donc d’augmenter la tension de fonctionnement. Par effet Joule, le
 
 
processeur chauffe donc beaucoup plus jusqu’au point ou il n'est plus possible de le
 
 
refroidir efficacement.
 
 
= Différentes approches =
 
== SISD (Single Instruction on Single Data) ==
 
SISD est une architecture matérielle dans laquelle un seul processeur exécute un seul flot d'instruction sur des données résidant dans une seule mémoire. Il n'y a donc aucune parallélisation.
 
 
== SIMD (Single Instruction on Multiple Data) ==
 
SIMD est une architecture ou il est possible d'executer simultanément la même instruction sur plusieurs données. Il ne faut pas confondre SIMD et multi-coeur. En effet, dans une architecture multi-coeurs les traitements des différents cœurs sont indépendants alors que dans le paradigme SIMD, c'est exactement la même instruction qui est executée sur les différentes données.
 
 
La plupart du temps, ce paradigme est mis en œuvre en utilisant la vectorisation (cf plus bas).
 
 
== MIMD (Multiple Instructions on Multiple Data) ==
 
MIMD est en fait l'intégration de plusieurs puces ayant l'architecture SIMD dans une seule. Tous les processeurs multicores du marché sont des puces MIMD
 
 
= Vectorisation =
 
Contrairement a une implémentation scalaire, qui traite une seule paire d'opérandes à la fois, une implémentation vectorielle traite une opération sur plusieurs paires d'opérandes à la fois. Le terme vient de la convention de mettre les opérandes dans des vecteurs ou des matrices.
 
 
 
Exemple : calculer les carrés des entiers d'un vecteur A et ls stocker dans un vecteur B..
 
 
Dans une approche classique (scalaire), les cases du vecteur 1 sont traitées une par une.
 
 
 
<nowiki>for (int a=0&nbsp;; i<A.length&nbsp;; i++){</nowiki>
 
 
<nowiki>B[i] = A[i] * A[i]&nbsp;;</nowiki>
 
 
}
 
 
 
Dans une approche SISD, il faudrait A.length tours de boucle pour terminer le calcul.
 
 
La vectorisation permet de calculer, via l'utilisation de registres de 128, 256 ou 512 bits, de calculer 4, 8 ou 16 cases du vecteur en un coup.
 
 
Il est toujours possible de paralléliser les calculs via plusieurs threads si il n'y a pas de dépendances de données. Dans le cas de l'utilisation d'un Core i5 de la génération Haswell (par exemple), les meilleures performances sont obtenues en parallélisant les calculs sur 4 threads (le processeur possède 4 cœurs physiques, sans Hyperthreading) et en faisant utilisation des instruction AVX2 permettant de calculer 8 cases en même temps par cœur. Il est donc possible de remplir le tableau par coup de 32 cases.
 
 
= Xeon Phi =
 
== Presentation ==
 
Xeon Phi est le nom commercial utilisa par Indel pour désigner une famille de multiprocesseurs basés sur l'architecture MIC (Many Integrated Core architecture).
 
 
 
Cette architecture se base sur l'intégration d'un grand nombre (57-61) de cœurs x86 légèrement revus pour intégrer des registres de 512 bits permettant une vectorisation optimisée des instructions ainsi qu'une technologie Hyperthreading améliorée permettant la gestion matérielle simultanée de 4 threads par cœurs (contrairement a 2 dans les processeurs classiques exploitant cette technologie).
 
 
 
Le Xeon phi possède donc 240 cœurs logiques comme le montre la commande 'cat /proc/cpuinfo'
 
 
 
processor : 239
 
 
vendor_id : GenuineIntel
 
 
cpu family : 11
 
 
model : 1
 
 
model name : 0b/01
 
 
stepping : 3
 
 
cpu MHz : 1052.630
 
 
cache size : 512 KB
 
 
physical id : 0
 
 
siblings : 240
 
 
core id : 59
 
 
cpu cores : 60
 
 
apicid : 239
 
 
initial apicid : 239
 
 
fpu : yes
 
 
fpu_exception : yes
 
 
cpuid level : 4
 
 
wp : yes
 
 
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr mca pat fxsr ht syscall nx lm rep_good nopl lahf_lm
 
 
bogomips : 2114.08
 
 
clflush size : 64
 
 
cache_alignment : 64
 
 
address sizes : 40 bits physical, 48 bits virtual
 
 
power management:
 
 
 
Les Xeon Phi se présentent sous la forme de cartes d'extension Pci-Express (à la manière des cartes graphiques). Leur consommation maximale en charge est d'approximativement 280W et elles peuvent déployer une puissance de calcul théorique de 2400 Gflops (milliard d'opérations a virgule flottante par seconde).
 
 
== Architecture mémoire et réseau d'interconnexion ==
 
Tous les cœurs de la carte se partagent une mémoire de 8 à 16 Go, distincte de la mémoire principale de l'ordinateur. De par le fait d'un grand nombre de cœur et de l'utilisation de la vectorisation sur de très grands vecteurs, L'utilisation d'une architecture mémoire classique n'est pas envisageable pour des questions de performance.
 
 
 
Le réseau d'interconnexion est un anneau bidirectionnel composé de&nbsp;:
 
 
* un bus de données de 64 octets
 
* un bus d'adresses plus petit d'environ 40 bits
 
* un bus encore plus petit pour l'acquittement des messages
 
 
Grâce a cette architecture, le débit théorique pouvant être obtenu approche les 320 Go/s.
 
 
== Compilation du programme ==
 
Le xeon phi etant un systeme a part entière (processeur, mémoire, etc.), compiler n'est pas aussi simple qu'il n'y paraît. Il faut en effet, faire de la cross-compilation c'est à dire compiler pour une achitecture A à partir d'un ordinateur tournant sur une architecture B. Cela sous-entend non-seulement de compiler ses sources correctement, mais oblige également à recompiler spécialement pour le Xeon Phi toutes les librairies utilisées.
 
 
Le compilateur a utiliser est le compilateur intel. L'utilisation du flag -mmic indique que l'architecture de destination est un Xeon phi.
 
 
icc -O3 -mmic program.c -o program
 
 
== Transfert et execution du programme ==
 
Le Xeon phi se comporte, pour la machine hôte, comme un autre ordinateur accessible via ssh a travers l'interface mic0.
 
 
Deux solutions s'offrent à nous pour executer le programme précédemment compilé&nbsp;:
 
 
* Le transférer dans la mémoire du Xeon Phi via sftp
 
* Partager un dossier de la machine hôte et s'y connecter à partir du xeon phi
 
 
Dans le cas ou les données à traiter sont très grandes (la plupart des cas, finalement), le choix n'est pas a faire. Le Xeon phi ne possédant que 16 Go de mémoire, toute la mémoire utilisée pour stocker les données sur le disque virtuel sera de la mémoire vive en moins pour l’exécution du programme.
 
 
Exemple&nbsp;:
 
 
icc -O3 -mmic program.c -o program
 
scp program mic0:
 
ssh mic0
 
./program
 

Latest revision as of 04:37, 26 November 2013

Xeon phi est le nom comercial d'une gamme de coprocesseurs basés sur l'architecture MIC (Intel Many Integrated Core Architecture ou Intel MIC). Il possèdent une cinquantaine de coeurs x86 ainsi qu'une mémoire allant de 8 à 16 Go.

Article Wikipedia