[HFR] Focus : Haswell et mémoire transactionnelle

Focus : Haswell et mémoire transactionnelle [HFR] - HFR - Hardware

Marsh Posté le 08-02-2012 à 18:00:02   0  

C'est par l'un de ses blogs qu'Intel vient d'annoncer une mise à jour de sa spécification AVX2 concernant Haswell, le prochain "Tock" d'Intel attendu pour 2013.Cette extension
Lire la suite ...

Reply

Marsh Posté le 08-02-2012 à 18:00:02   

Reply

Marsh Posté le 08-02-2012 à 22:45:27   0  

Eviter le partage d'une ligne de cache entre 2 CPU pour des raisons de performance est assez classique..

Reply

Marsh Posté le 09-02-2012 à 02:06:50   0  

renozyx a écrit :

Eviter le partage d'une ligne de cache entre 2 CPU pour des raisons de performance est assez classique..

En l'occurrence ce n'est pas le problème, ici n'importe quel autre thread sur le système qui accède une ligne de cache sur lequel il y'a un lock l'invalidera.

Reply

Marsh Posté le 09-02-2012 à 10:03:36   0  

des pertes de performances d'accès mémoire en applicatif, sont à prévoir ?
Ou le mécanisme à une élaboration pour le Miss-rate ?
(j'ai pas encore tout lu [:the geddons])


Message édité par NoradII le 09-02-2012 à 10:04:32
Reply

Marsh Posté le 09-02-2012 à 14:55:45   0  

Pourquoi donc avoir remplacé "elision" par "elation" dans votre description du HLE (cf première illustration) ? "elation" voulant dire "allégresse", ça n'a pas trop de rapport avec le sujet !

Reply

Marsh Posté le 09-02-2012 à 15:51:16   0  

Corrigé

Reply

Marsh Posté le 10-02-2012 à 04:59:12   0  

Bonjour,  
Je ne voudrais pas défendre Intel mais je ne suis pas forcément d'accord avec vous sur le fait que ces nouvelles instructions n'apporteraient pas de facilités en terme de programmation (paragraphe sur HLE). L'auteur de la note sur le blog d'Intel prend le cas d'une table de hachage pour laquelle il explique qu'avec TSX il pourrait implémenter cette table avec la performance d'une table "lock-free" (implémentation sans mutex mais thread-safe ; à la manière des tables implémentées dans Intel TBB) et la facilité de programmation d'une table utilisant des locks. C'est non négligeable. Dans le cas de votre exemple de compteur, il est vrai qu'on voit mal ce que TSX apporte par rapport aux instructions atomiques.

Reply

Marsh Posté le 10-02-2012 à 14:36:37   0  

jdemouth a écrit :

Bonjour,  
Je ne voudrais pas défendre Intel mais je ne suis pas forcément d'accord avec vous sur le fait que ces nouvelles instructions n'apporteraient pas de facilités en terme de programmation (paragraphe sur HLE). L'auteur de la note sur le blog d'Intel prend le cas d'une table de hachage pour laquelle il explique qu'avec TSX il pourrait implémenter cette table avec la performance d'une table "lock-free" (implémentation sans mutex mais thread-safe ; à la manière des tables implémentées dans Intel TBB) et la facilité de programmation d'une table utilisant des locks. C'est non négligeable. Dans le cas de votre exemple de compteur, il est vrai qu'on voit mal ce que TSX apporte par rapport aux instructions atomiques.


Vous faites référence à cela : http://software.intel.com/en-us/bl [...] explained/ ?
 
Je ne pense pas qu'avec cet exemple l'on puisse dire que HLE facilite la programmation. En pratique utiliser un seul lock global sur la hashtable n'est pas une technique nouvelle, c'est même probablement l'implémentation la plus basique et classique qui existe.  
 
La différence à mes yeux est que HLE rend cette implémentation basique et lente très performante sur Haswell, c'est d'ailleurs ce que l'on a écrit en conclusion, en permettant un contrôle au niveau matériel des locks, un code qui n'a pas été écrit de manière optimale (avec des locks dont le scope est beaucoup trop large) va devenir performant via HLE.  
 
Dire que HLE apporte des facilités de programmation dans ce cas me parait un sacré raccourci. Si les performances de la hashtable sont critiques, implémenter un lock unique à scope large avec HLE ne sera efficace que sur Haswell. Dans le monde réel, c'est une mauvaise solution. Utiliser une lib tierce est probablement un meilleur choix.  
 
Si à l'inverse les perfs de la hashtable ne sont pas critiques, alors un lock à scope large tournera plus vite sur Haswell, avec un impact final sur les performances qui pourra être limité.

Reply

Marsh Posté le 10-02-2012 à 14:44:46   0  

Merci pour l'article très complet comme toujours (pas tout tout compris mais je relirai à tête reposée ce soir ^^). Par contre je note quelques anglicisme dans l'usage de certains verbes :
"une ressource partagée peut être accédée de manière concurrente par plusieurs autres ressources. "
et
"Au lieu de lire 2, notre compteur lira toujours 1"
 
C'est peut être juste moi mais je trouve que ça sonne bizarre (alors que "can be accessed by" et "the counter reads 1" ça passe tout à fait en anglais).
 
Bref, pas bien grave mais j'avais envie de poster un commentaire XD


Message édité par BlueScreenJunky le 10-02-2012 à 14:45:11
Reply

Marsh Posté le 10-02-2012 à 16:13:50   0  

C_Wiz a écrit :

jdemouth a écrit :

Bonjour,  
Je ne voudrais pas défendre Intel mais je ne suis pas forcément d'accord avec vous sur le fait que ces nouvelles instructions n'apporteraient pas de facilités en terme de programmation (paragraphe sur HLE). L'auteur de la note sur le blog d'Intel prend le cas d'une table de hachage pour laquelle il explique qu'avec TSX il pourrait implémenter cette table avec la performance d'une table "lock-free" (implémentation sans mutex mais thread-safe ; à la manière des tables implémentées dans Intel TBB) et la facilité de programmation d'une table utilisant des locks. C'est non négligeable. Dans le cas de votre exemple de compteur, il est vrai qu'on voit mal ce que TSX apporte par rapport aux instructions atomiques.


Vous faites référence à cela : http://software.intel.com/en-us/bl [...] explained/ ?
 
Je ne pense pas qu'avec cet exemple l'on puisse dire que HLE facilite la programmation. En pratique utiliser un seul lock global sur la hashtable n'est pas une technique nouvelle, c'est même probablement l'implémentation la plus basique et classique qui existe.  
 
La différence à mes yeux est que HLE rend cette implémentation basique et lente très performante sur Haswell, c'est d'ailleurs ce que l'on a écrit en conclusion, en permettant un contrôle au niveau matériel des locks, un code qui n'a pas été écrit de manière optimale (avec des locks dont le scope est beaucoup trop large) va devenir performant via HLE.  
 
Dire que HLE apporte des facilités de programmation dans ce cas me parait un sacré raccourci. Si les performances de la hashtable sont critiques, implémenter un lock unique à scope large avec HLE ne sera efficace que sur Haswell. Dans le monde réel, c'est une mauvaise solution. Utiliser une lib tierce est probablement un meilleur choix.  
 
Si à l'inverse les perfs de la hashtable ne sont pas critiques, alors un lock à scope large tournera plus vite sur Haswell, avec un impact final sur les performances qui pourra être limité.


 
Je fais effectivement référence à cet article.  
 
Je suis tout à fait d'accord avec vous sur le fait qu'une table de hachage implémentée avec un unique lock n'est pas un truc nouveau et que ce n'est pas efficace en cas de forte contention.
 
Ce que je dis en revanche c'est que si on peut écrire un code aussi simple qu'une table de hachage avec un lock en obtenant la performance d'une implémentation bien plus évoluée, de type "lock-free", ça ressemble bien à une forte simplification de la programmation de la table efficace.  
 
J'ai l'impression que nous sommes d'accord mais que nous prenons la question depuis des points de vue différents. Nous sommes d'accord que HLE ne rend effectivement pas l'implémentation d'une table de hachage avec un lock plus simple. Ceci dit, ça l'est déjà assez. Par contre ça permet d'éviter la complexité d'une implémentation plus évoluée.


Message édité par jdemouth le 10-02-2012 à 16:14:26
Reply

Marsh Posté le 10-02-2012 à 16:13:50   

Reply

Marsh Posté le 10-02-2012 à 16:59:12   1  

jdemouth a écrit :

Ce que je dis en revanche c'est que si on peut écrire un code aussi simple qu'une table de hachage avec un lock en obtenant la performance d'une implémentation bien plus évoluée, de type "lock-free", ça ressemble bien à une forte simplification de la programmation de la table efficace.

Penser qu'il s'agit d'une simplification de la programmation revient à dire qu'il faut uniquement se préoccuper des performances sous Haswell et non sur les autres architectures, alors même que l'intérêt de HLE est de proposer des binaires simplement compatibles avec les architectures qui n'implémentent pas TSX.  
 
Le programmeur qui prendrait la décision de "simplifier" son code de la sorte prendrait la décision d'agrandir l'écart de performances entre les architectures existantes et Haswell (ce qui, à n'en point douter, ravirait Intel dont on peut comprendre qu'ils militent pour que l'on présente les choses de la sorte sur leur blog ;)). Cela ne me semble pas cependant être une décision qu'un programmeur consciencieux doive prendre. Pour moi il ne s'agit donc pas d'une simplification. Si la zone de code est critique, c'est un mauvais compromis. Si par contre elle ne l'est pas, on aura un petit gain de performances gratuit sans avoir à implémenter mieux. Mais le programmeur ne l'aurait de toute façon pas fait.
 
HLE benifieciera a mon avis beaucoup aux programmeurs "qui ne cherchent pas a optimiser", et en cela Intel propose une réponse interessante.
 

jdemouth a écrit :

Par contre ça permet d'éviter la complexité d'une implémentation plus évoluée.

D'une vous assumez que les performances de l'élision soient aussi bonnes que d'autres libs, de deux, il s'agit d'une solution qui ne marchera que sur une plateforme.

Reply

Marsh Posté le 11-02-2012 à 00:29:08   0  

@C_Wiz: J'imagine que ma façon de penser est une sorte de déformation professionnelle... :).

Reply

Marsh Posté le 11-02-2012 à 02:48:03   0  

Trop de CUDA ? ;)

Reply

Marsh Posté le 11-02-2012 à 11:39:48   0  

Trop de CUDA sur Kepler...

Reply

Marsh Posté le 06-06-2012 à 18:46:45   0  

Edit : Ok 2013.
 
Je cherche à monter ma configuration , budget maximum 2700 euros , comme le Haswell sort en 2013 , autant ne pas partir sur du X79 ? et partir sur du Z77 ?


Message édité par ATorG le 06-06-2012 à 18:49:19
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed