Hyperthreading, un gain réel ?

Répondre
Partager Rechercher
Bonjour le Labo,

[My Job Life on]Tout à commencer cette semaine avec une discution assez banale au départ :
qqun : "t'as vue les new MBPro sont sorti !"
moi : "Wai mais nul ils ont toujours pas sorti un MB avec quad core"
qqun : "Wai mais sur les i5/i7 y'a l'hyperthreading, c'est pareil"
moi : "bah non, ça n'a rien a voir…" [My Job Life off]

Je me tourne vers vous car pour la peine je me pose quelques questions sur l'hyperthreading. Je pense avoir compris le principe de base : avec l'HT un coeur physique est splité en deux coeurs logiques qui permettent de faire tourner deux process en parallèle.

La première question que je me pose c'est sur les performances du système ou plutôt sur le split. Si le coeur physique est splité, les perf/coeur logique sont donc égale à la moitié non ? Donc il mettra deux fois plus de temps a exécuter un thread ? Donc entre faire tourner deux threads en // qui mettront 2x plus de temps et faire tourner deux threads en série au final ça change quoi ?

Ma deuxième question concerne les softs : quels sont les OS qui savent tirer tout le potentiel de cette technologie ? Windows et OS X supporte la technologie mais est-ce que les soft savent l'utiliser ?

J'ai fais quelque test à l'arrache sur un Mac Pro Bi-Xeon avec HT : dans le moniteur j'ai bien 16 processeurs mais lorsque je lance des gros job dessus (style encoding video avec handbrake64 ou retouche photo avec Aperture 3 - j'ai fait avec ce que j'avais sous la main) j'en vois bien 8 se mettre à 100% mais les huit autres ne bouge pas => du coups il se passe quoi, j'utilise réellement 100% des 2 proc ou seulement 50% ???

Et concernant les ≠ linux, ça prend bien en charge l'HT ou c'est complètement à la ramasse ?

Et une petite dernière : au boulot, des collègues compte changer leur vieux cluster de G5 par un cluster de Xserve Bi-Xeon, toutes les lames tournerons donc sous OS X et servirons à faire de la simulation numérique. La plupart des codes utilisés sont en fortrant => avec ces histoire d'HT, ça se passe comment ? C'est déjà inclus dans les compilo genre MPI ça suffit ? faut rajouter des jeux d'instructions ?

Ça me turlupine un peu car ça serais comme même con de foutre 3 milliard dans des Xserve si on ne peut se servir que de 50% de la capacité des proc !

Voilà je m'en remet à vous.
Tu y gagnes car tout simplement ton cœur d'exécution passe son temps à se tourner les pouces. Qu'il puisse traiter deux thread simultanément lui fait gagner en efficience.
Le gain n'est pas énorme, ça dépends des applications, mais ça va de 5% à 35% +/-.

C'est appréciable, mais ça ne remplace par un 2ème cœur d'exécution.

Pour les appli, il suffit qu'elles soient multitask friendly. C'est à l'OS de répartir les thread sur les cœurs physiques et logiques. J'ai un i7 860 (4 cœurs physiques +4 logiques).
Sous seven; les cœurs employés sont en priorité les physiques, les logiques viennent après. Car l'os sait différencier les deux. Sur un OS plus ancien supportant le multi processeur, par exemple win2k, je parierai un bonbon que les cœurs seraient exploités seraient dans l'ordre incrémental, cad 1 puis 2 puis 3 puis 4 etc... sauf que les cœurs pairs sont les cœurs logiques : pas efficient et pertes de perfs.
Oki, en fait le truc qui me fait le plus peur avec cette technologie c'est de perdre en perf dans des cas mono-tache.

Pour les OS ça sera soit du "linux-based" 64bit soit OS X. OS X je sais qu'il "voie" le HT, pour les linux je suppose aussi mais je n'en ai pas a ma disposition.

Intel a ajouté l'HT dans ses compilo, mais bon voilà l'tarif aussi quoi… Et certain au labo préfère l'opensource.

En tout cas je suis rassuré de voir qqun qui à la même vision que moi : 2 core >>>> 1 core+1core HT
En terme de jeux/application s'y rapprochant (3Dmark & co ...).
Il n'y a pas de pertes/gains supérieures à 2%, ou alors pour un jeu sur cent, de ce que je me souviens d'un graphique de test.
Sans m'y connaître, j'ai tendance à dire que le gain peut valoir le surcoût pour des applis l'utilisant, mais celles ci seraient plus pros que grand public.
Et, évidemment, deux coeur physiques > un coeur physique un coeur virtuel, il suffit de voir les dernier i5 et les comparer à fréquences égales au 750.
Pour ce genre de question, je doute que tu trouves grand monde ici qui maitrise suffisamment les compilos et l'archi cpu, surtout dans une optique HPC.
Essaye plutot sur le forum hardware advanced de capard pc, si tu n'as pas forcément toujours de réponse toute faite, ils donnent de bonnes pistes.
L'HyperThreading ne te fera dans 99% des cas jamais perdre de perf.

Ca permet juste a ton coeur physique de traiter deux threads en meme temps vu qu'un thread n'utilise quasiment jamais 100% des ressources d'un coeur.

http://fr.wikipedia.org/wiki/Hyper-Threading

De toute facon Dual Core non HT > Mono Core HyperThreader > Mono Core.

Multi Core + HT > Multi Core Non HT.

Dans de rare cas ca faisait perdre des perfs sur le P4 mais dans la majorité des cas ca en fait gagner donc Go ca mange pas de pain.
Citation :
Publié par Kizen
Multi Core + HT > Multi Core Non HT.
Ça dépends du nombre de coeurs.

Le conseil d'Eyce est très bon, je me flagellerai de ne pas y avoir pensé. Si tu arrives à avoir l'attention de Fefe c'est tout bon.
L'hyperthreading permet de voir 2 threads sur un seul cœurs d'exécution. Certaines unités ont étés doublées, notamment les registres.

Pourquoi une exécution est plus rapide sur un cœur hyperthreadés que sur un cœur simple : je suppose qu'il y a moins de changements de contexte liés au switchs de thread, également l'utilisation de certaines unités par un thread lorsque l'autre ne les utilise pas.

D'une manière générale, tu peut considérer un cœur hyperthreadé comme 15 à 20% d'un vrai coeur dans les cas favorables.

Des vrais cœurs seront toujours plus appréciables que des fakes cœurs logiques d'un processeur hyperthreadé.
Merci pour toutes ces réponse.

J'irais faire un tour sur Canard dès que j'aurais un peu de temps à moi.

Sinon le wiki je l'ai lu, c'est juste une translation du wiki US et il n'apporte pas beaucoup d'information technique.

D'ailleurs des idées d'ouvrages traitant le sujet ?
Ca depend pour quoi faire. Pour du calcul lourd (encodage video) c'est meme nefaste. Pour la plupart du reste, ou ca attend beaucoup sur les IO ou avec du code mal optimise pour le cache et le TLB ca paye (35-40% de mieux sur le temps d'execution des 2 threads par rapport au sequentiel equivalent). Pour detailler un peu plus, le but de l'hyper threading c'est de recouvrir les blocages sur la memoire d'un thread avec l'execution d'un autre thread. Imaginons que tu as un code qui fait une boucle, pendant un moment elle va travailler sur le cache, et ca va aller super vite. Seulement, a un moment ta boucle continue sur une portion de la memoire qui n'est pas encore en cache. A ce moment, ton thread est bloque pour 400 cycles (au moins) pendant que la memoire est chargee dans le cache. A ce moment, l'hyper threading va se mettre en route et reveiller le second thread, qui va occuper les FPU pendant que la memoire arrive.
Citation :
Publié par Eyce Karmina
Pour ce genre de question, je doute que tu trouves grand monde ici qui maitrise suffisamment les compilos et l'archi cpu, surtout dans une optique HPC.
Essaye plutot sur le forum hardware advanced de capard pc, si tu n'as pas forcément toujours de réponse toute faite, ils donnent de bonnes pistes.
C'est mon travail, si t'as des questions je serais content d'y repondre.
Citation :
Publié par Kizen
L'HyperThreading ne te fera dans 99% des cas jamais perdre de perf.

blabla

Dans de rare cas ca faisait perdre des perfs sur le P4 mais dans la majorité des cas ca en fait gagner donc Go ca mange pas de pain.
Euh... j'ai un I7 920, et partout on dit que pour les joueurs, mieux vaut virer l'HT, sous peine de baisse de perf jusqu'à 20% suivant les jeux. Tout le monde s'est gouré en fait, ou ça ne concerne que les jeux (à cause de... Dx ?) ?
Le seul jeu MMORPG que je connais qui comprend l'intérêt du HT est Everquest 2. Il n'ont pas viré cette particularité à ma connaissance, les concepteurs.
Il semble, mais il faudrait faire des tests, que les i5 et i7 qui font de l'hyperthreading ont des avantages sur les Intel qui ne le font pas...
Citation :
Publié par Mothra
C'est mon travail, si t'as des questions je serais content d'y repondre.
J'ai pas de question moi, j'ai arrêté ya bientôt 10 ans et j'ai jamais eu besoin de me poser de question sur l'HT vu que je bossais sur du power 3 (mais j'aurais bien aimé gouter au smt sur power 5) ;-)

Désolé si je t'ai froissé, je conseillais juste d'aller poser la question là bas parce je sais qu'il aura des réponses pertinentes (genre celles de fefe, mais pas uniquement) alors que sur jol ce sujet est beaucoup plus rarement abordé donc il a moins de chances d'avoir des réponses de la même qualité.
Il en aura peut-être, ya tout type de profil sur jol, faut juste avoir la chance que ce type de profil vienne sur le fil, mais dans la section dédiée de cpc, c'est un des profils les plus actifs.
Ce qui est con c'est que l'HT est très fortement influencé par l'utilisation du cache , donc tant qu'on peu coller deux thread en cache tout va bien , quand on peu plus c'est le drâme. L'HT ne sait pas pré-fetch dans la mémoire tout seul ... à plus forte raison quand on fait joujou con avec du rdma voir pire ...
En utilisation HPC ... le terme est vague , le HPC ça va de la seti@Home jusqu'à roadrunner et jaguar en passant par les fermes graphiques et autres joyeusetés.
Donc le mieux si tu as un budget c'est d'essayer de taxer des échantillons à tes revendeurs favoris en leur faisait miroiter le pognon (à tous les coups on gagne), de bencher ton code à petite échelle avant d'envoyer du lourd.
Je viens de faire ça pour un client , on lui a envoyé deux sample , il a fait joujou quelques temps avec et là il nous en prend un lot ouééé argennnt !!!
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés