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 !

La nouvelle mouture de l'Intel Xeon Phi approche
Avec plus de soixante-douze cœurs et deux unités de traitement chacun

Le , par dourouc05

0PARTAGES

8  0 
Pour contrecarrer le mouvement des processeurs graphiques (GPU) dans le domaine du calcul scientifique de haute performance (HPC), Intel a lancé en 2013 ses coprocesseurs Xeon Phi. L’idée principale est de fournir un grand nombre de cœurs (une soixantaine pour la première génération), atout principal des GPU (les modèles actuels montent à plusieurs milliers de cœurs). La première génération de Xeon Phi est notamment utilisée dans le supercalculateur chinois Tianhe-2, le plus puissant au monde depuis sa construction en 2013, selon le classement Top500.

Cependant, comme pour les GPU, ces cœurs sont très différents de ceux des processeurs plus traditionnels (comme les gammes Core i3-7 d’Intel, par exemple) : ils sont nettement moins véloces, avec des fréquences de l’ordre du gigahertz — le parallélisme de ces coprocesseurs est leur principale caractéristique. Néanmoins, contrairement aux GPU, ils peuvent se programmer d’une manière très similaire aux processeurs classiques.


La deuxième génération est sur le point d’arriver, elle devrait être commercialisée cette année. Connue sous le nom de code Knights Landing, cette nouvelle mouture tient du superlatif pour ses caractéristiques : pas moins de septante-deux cœurs, chacun hébergeant deux unités de traitement vectoriel AVX-512 (qui travaillent sur des registres de cinq cent douze bits) ; individuellement, ces cœurs devraient être trois fois plus rapides que précédemment. La puce elle-même est gravée avec un processus à quatorze nanomètres, ce qui se fait de mieux pour le moment, avec notamment de grands gains en termes de puissance consommée (et de chaleur dissipée).

L’architecture prévoit aussi des bus DDR4 pour la mémoire principale, mais surtout seize gigaoctets de mémoire intégrée sur la puce elle-même (avec une bande-passante jusqu’à cinq fois supérieure à celle de la DDR4, quinze fois par rapport à la DDR3, encore majoritaire dans les ordinateurs actuels). Cette mémoire sera à peu près aussi rapide que les caches L3 des processeurs actuels (bien qu’ils soient limités à quelques mégaoctets !), avec une bande passante de cinq cents gigaoctets par seconde.


Cette super-mémoire cache utilisera l’interface HMC (hybrid memory cube), concurrente de HBM (high bandwidth memory) en cours de déploiement sur les processeurs graphiques (les cartes Fury remettent AMD à l’avant-plan en termes de performance). In fine, un tel processeur pourra proposer une puissance de calcul de l’ordre de trois téraflops, c’est-à-dire trois mille milliards d’opérations en virgule flottante par seconde.

Une autre nouveauté par rapport à la génération précédente est que ces coprocesseurs pourront servir de processeurs principaux et faire fonctionner le système d’exploitation de la machine. L’intérêt majeur est de se débarrasser d’une connexion par bus PCI-Express, qui limitait la performance de son prédécesseur (une constatation partagée par le concurrent NVIDIA, qui s’apprête à proposer sa technologie NVLink).


Au niveau de la communication, Intel s’apprête également à communiquer plus d’informations sur son Omni Path, une interface d’interconnexion entre nœuds dans un supercalculateur. Intel s’apprête ainsi à marcher sur les platebandes de géants comme InfiniBand, avec une technologie présentée comme supérieure. Notamment, les latences de communication devraient être de l’ordre de cent nanosecondes, quand InfiniBand monte à presque deux microsecondes, Ethernet à dix à cent microsecondes.

Chaque processeur Xeon Phi Knights Landing aura deux ports Omni Path. L’objectif semble être l’intégration verticale dans les supercalculateurs, Intel ayant annoncé un partenariat avec HP pour la construction de serveurs autour des technologies HPC d’Intel, rassemblées sous le nom de SSF (scalable system framework), dans le contexte de la gamme Apollo de HP.


Sources et crédit images : Intel’s Xeon Phi 14nm ‘Knights Landing’ Co-Processors Detailed – OmniPath Architecture 100 Series and 16GB HMC on a 2.5D Interposer et Quick Note: Intel “Knights Landing” Xeon Phi & Omni-Path 100 @ ISC 2015.

Cette entrée a été publiée dans HPC le16 juillet 2015par dourouc05.

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

Avatar de codec_abc
Membre confirmé https://www.developpez.com
Le 09/08/2015 à 13:05
@sazearte : Comme dit dans l'article cela vise avant tout le calcul scientifique. A mon avis, il ne faut pas le comprendre comme quoi on va faire 1 calcul sur 72 cœurs mais plutôt 72 calculs (beaucoup plus même) sur 72 cœurs. Par exemple, en infographie on va projeté les points des triangles des objets que l'on veut afficher à l'écran pour passer de la 3D à la 2D. Or, la projection d'un point n'impactant pas celles des autres, tu peux tous les projeter en parallèle.
2  0 
Avatar de
https://www.developpez.com
Le 09/08/2015 à 15:22
Citation Envoyé par sazearte Voir le message
Je suis peut être un mauvais un développeur, mais j'ai toujours eu du mal de paralléliser des programmes, en tous cas de manière efficace.
Gérer 2-3 thread encore sa vas mais au delà... j'en vois pas l'utilité déjà.
En générale je fais un thread pour l'interface graphique et 1-2 pour le reste.

Je ne fais pas de jeux vidéos, ni de calcule scientifique, quelqu'un peut il m'expliquer comment on peut faire un calcule sur 72 cœurs ?, a moins qu'on réalise 72 calcules indépendant en même temps, dans ce cas oui, c'est facile a exploité.

Si j'ai bien compris, il vaut mieux faire pleins de petits calcules en mêmes temps sur des cœurs peu performant, qu'un gros calcule sur un cœur très puissant.
Tu es donc soumis aux contraintes temporel de datation dans ta façon de développez. Et en aucun cas au délai de réalisé des actions. Donc pas vraiment scientifique, mais plutôt policier et pas du tout biologiste ou chimiste, mais plutôt commerçant.
D'habitude le système d'exploitation soulage et permet de rendre accessible le développement. Le système d'exploitation se rapprochant des sémaphores et même là il lui arrive de ne pas être performant ou de carrément "perdre les pédales".
Je n'ai en aucun cas remis en cause tes compétences, mais là tu as parler d'une application pour lequel tu réserve des threads pour empêcher de "figé" mais pas éviter de ralentir ou pénaliser.

Le coté humain de se focalisé sur qu'un seul point de réflexion est souvent tragique pour les scientifiques en l'informatique, puisque cela ne se rapproche de scénarios parallèles, le cas du try catch C++ est purement celui des massivement parallèles avec des incertitudes de sémaphores, donc vraiment un système sur plusieurs CPU, et parfois même en réseau (ex: M.P.I. qui n'est pas l'un des meilleurs). Très loin de se dont tu as faire l’observation.
1  0 
Avatar de DonQuiche
Expert confirmé https://www.developpez.com
Le 09/08/2015 à 15:31
Citation Envoyé par sazearte Voir le message
Je suis peut être un mauvais un développeur, mais j'ai toujours eu du mal de paralléliser des programmes, en tous cas de manière efficace.
Gérer 2-3 thread encore sa vas mais au delà... j'en vois pas l'utilité déjà.
En générale je fais un thread pour l'interface graphique et 1-2 pour le reste.

Je ne fais pas de jeux vidéos, ni de calcule scientifique, quelqu'un peut il m'expliquer comment on peut faire un calcule sur 72 cœurs ?, a moins qu'on réalise 72 calcules indépendant en même temps, dans ce cas oui, c'est facile a exploité.

Si j'ai bien compris, il vaut mieux faire pleins de petits calcules en mêmes temps sur des cœurs peu performant, qu'un gros calcule sur un cœur très puissant.
D'abord as-tu de tels besoins ? Si tu des besoins justifiant l'utilisation d'un monstre comme le Xeon Phi, il est très probable qu'il existe un algorithme bien plus parallélisable. Si en revanche tu sous-exploites déjà trois coeurs, pas la peine de paralléliser sur 72.

Et puis, tu sais, si tu passes en revue toutes tes boucles, tu te rendras compte que la grande majorité d'entre elles sont parallélisables car leurs calculs sont indépendants. Et il y a finalement peu de problèmes (un algo est une réponse à un problème) qui ne sont pas efficacement parallélisables bien au-delà de quelques coeurs.

Par ailleurs il y a les bibliothèques : demain tu auras besoin d'interpréter les paroles de l'utilisateur, de reconnaître le visage de son chien, ou de bâtir des profils à partir de pétaoctets de données. Et tu t'appuieras pour cela sur des biblios très parallélisées et toutes faîtes. Sans parler des compilateurs qui vont de plus en plus paralléliser automatiquement chaque fois qu'ils en auront l'opportunité (pour des bénéfices limités toutefois : il ne s'agit pas de bâtir des archis parallèles à notre place, simplement de paralléliser des boucles).

Enfin à ta question : comment programme t-on ça, j'ai envie de répondre : pas en C++ ou en Java. On peut. On le fait (de moins en moins). Mais ce n'est pas adapté.
1  0 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 29/06/2016 à 10:20
On vas prochainement acheter ce CPU (pour remplacer certains Xeon mal adapté).
Si j'ai fait l'impasse sur la génération précédente c'était pour une raison comme le rappelle l'article : c'était une carte d'extension, pas un cpu ou l'on pouvait booter un os dessus.
La sa change on pourra installer Windows/Linux dessus directement.

En dehors du calcule, je pense que ces processeurs pourrait être intéressants pour le web, en plsu des serveurs mutualisé et offre VPS, les dédiés y trouverait leurs compte, car un visiteur qui ouvre une page sa consomme peu de ressource sur un core de cpu. Donc il est plus intéressant à mon sens que le serveur et pleins de core mais de faible puissance que 10 core très puissants.

Au niveau des chiffres bruts, ces processeurs ne dépassent pas l’offre de NVIDIA : « à peine » trois téraflops et demi pour le plus haut de gamme, quand les GPU NVIDIA Pascal atteignent cinq téraflops
Il n'y a pas que la puissance brute qui compte, il vaut mieux avoir un processeur de 3 téraflops qu'on pourra exploiter à 100%, qu'un processeur graphique de 5 téraflops qu'on pourra exploiter qu'a 50%.
Bien exploiter le cpu avec une architecture multicore, c'est plus simple qu'avec le gpu.
1  0 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 09/08/2015 à 12:08
Je suis peut être un mauvais un développeur, mais j'ai toujours eu du mal de paralléliser des programmes, en tous cas de manière efficace.
Gérer 2-3 thread encore sa vas mais au delà... j'en vois pas l'utilité déjà.
En générale je fais un thread pour l'interface graphique et 1-2 pour le reste.

Je ne fais pas de jeux vidéos, ni de calcule scientifique, quelqu'un peut il m'expliquer comment on peut faire un calcule sur 72 cœurs ?, a moins qu'on réalise 72 calcules indépendant en même temps, dans ce cas oui, c'est facile a exploité.

Si j'ai bien compris, il vaut mieux faire pleins de petits calcules en mêmes temps sur des cœurs peu performant, qu'un gros calcule sur un cœur très puissant.
0  0 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 09/08/2015 à 13:21
A mon avis, il ne faut pas le comprendre comme quoi on va faire 1 calcul sur 72 cœurs mais plutôt 72 calculs (beaucoup plus même) sur 72 cœurs.
C'est bien ce que je pensait, ce produit est uniquement destinée a ceux qui font plein de petits calcules indépendant les uns des autres. Merci pour ces précisions.
0  0 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 09/08/2015 à 13:57
Est-ce qu'un produit matriciel rentre dans ta définition de "plein de petits calcules indépendant les uns des autres" ? Il y a un haut degré d'indépendance, certes, mais pas entièrement (les lignes et colonnes sont réutilisées régulièrement)… et pourtant l'algorithme du produit exploite tous les cœurs disponibles (si les matrices sont assez grandes). De même pour la FFT ou d'autres algos souvent utilisés en calcul scientifique. Une structure avec un énorme for dont les itérations sont parfaitement indépendantes n'est pas le seul moyen d'utiliser ces architectures (mais c'est le plus facile).
0  0 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 09/08/2015 à 14:22
Au contraire, ça peut être très utile — tout dépend du contenu de tes tâches ! Par exemple, pour résoudre une équation différentielle 4D, tu as deux processus imbriqués : l'un qui fonctionne à chaque pas de temps (3D), puis un deuxième qui s'occupe de l'intégration temporelle (1D). Dans ce cas, tu as une forte dépendance entre les tâches, mais la parallélisation reste utile, à condition de regarder à la bonne échelle (résoudre le problème 3D à un pas de temps, synchroniser, intégrer, synchroniser, recommencer). Ça reste effectivement une application de niche, tout ne s'y prête pas, loin de là.
0  0 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 09/08/2015 à 14:53
Par exemple, pour résoudre une équation différentielle 4D, tu as deux processus imbriqués : l'un qui fonctionne à chaque pas de temps (3D), puis un deuxième qui s'occupe de l'intégration temporelle (1D). Dans ce cas, tu as une forte dépendance entre les tâches, mais la parallélisation reste utile, à condition de regarder à la bonne échelle (résoudre le problème 3D à un pas de temps, synchroniser, intégrer, synchroniser, recommencer). Ça reste effectivement une application de niche, tout ne s'y prête pas, loin de là.
La façon dont tu explique me fait penser a une vrai machine a gaz.

résoudre le problème 3D à un pas de temps, synchroniser, intégrer, synchroniser, recommencer
C'est le problème des thread justement : leurs gestion, sa as vite fait de se transformer en vrai bordel ingérable.
0  0 
Avatar de RyzenOC
Inactif https://www.developpez.com
Le 09/08/2015 à 15:47
D'abord as-tu de tels besoins ? Si tu des besoins justifiant l'utilisation d'un monstre comme le Xeon Phi, il est très probable qu'il existe un algorithme bien plus parallélisable. Si en revanche tu sous-exploites déjà trois coeurs, pas la peine de paralléliser sur 72.
Je fais du C et de l'assembleur sur de l'embarqué, donc non j'ai pas besoin d'un Xeon Phi, la plupart du temps je dois développer avec des processeurs PowerPC mono cœur et 64mo de ram.
On utilise des PowerPC car il sont plus résistant que les x86, dans les conditions extrêmes ou nos appareils sont envoyer (antarctiques et en très haute altitude)
(Au passage sa explique pourquoi j'aime AmigaOS )

Clairement je suis a l'opposé totale du client cible.
Cela dit se sujet ma intrigué sur l'utilisation de ces 72 cœurs.

Puisque le calcule scientifique et un monde de niche, je pense pas qu'il existe des bibliothèques préexistante qui mâche tous le boulot dans la majorité des cas, même en python Scipy/Numpy sont loin de tout recouvrir le monde des math.
Je demandais au dev qui sont dans ce cas de me dire comment il faisait. Ils n'ont pas 1 calcule a paralléliser, mais ils ont plusieurs calcules (plus ou moins indépendant) qu'ils peuvent lancer en même temps, c'est ce que j'ai compris de vos remarques.

Apres j'admet que je suis loin d'être un adepte des threads, puisque j'en utilise rarement, forcément j'imagine que pour paralléliser des taches vous seriez plus compétent que moi.
0  0