J'ai un ordinateur de bureau Dell exécutant Windows 7 Professionnel. Je pense que le processeur est un Intel Core i7-2600
Récemment, un expert en informatique spécialisé dans les clusters Linux examinait mon ordinateur de bureau et a dit spontanément que ma machine avait 8 threads. Il a dit que cela signifiait que la machine avait 4 noyaux: 2 fils par noyau. J'ignorais que la machine avait plus d'un noyau.
Maintenant que je sais que la machine a apparemment quatre cœurs, j'espère pouvoir exécuter peut-être trois modèles simultanément, un modèle sur chacun des trois cœurs.
Quelqu'un a suggéré que je "désactive l'hyperthreading" afin de "pouvoir utiliser tout le cœur par modèle". Sinon, il a écrit "ça tourne à la moitié de la vitesse".
J'exécute beaucoup de modèles avec le programme R et l'ordinateur qui m'aidait m'a indiqué qu'un de mes fichiers de script R affichait un message indiquant qu'il utilisait 7 des 8 threads. Donc, étant donné que le fichier R utilisait 2 threads par cœur avec trois des cœurs, peut-être que désactiver l'hyperthreading n'augmenterait pas la vitesse de calcul dans mon cas?
Si désactiver l'hyperthreading augmenterait la vitesse de calcul des scripts R, comment pourrais-je faire cela?
J'ai un peu cherché sur Internet et j'ai trouvé une discussion à ce sujet sur ce forum:
Un commentaire sur ce forum qui me concerne est l'affirmation que:
"Le plus gros problème pour ceux qui veulent arrêter HT, est que beaucoup de fabricants d'ordinateurs (HP, Dell) n'autorisent pas les acheteurs de leurs ordinateurs l'option du BIOS à arrêter HT. Et depuis que Windows regarde le HT paramétrer dans le BIOS pour déterminer s’il faut gérer HT, c’est un cas d’immobilité, et aucune possibilité de passer à la vitesse supérieure. "
Étant donné que mon ordinateur est un ordinateur Dell, je ne suis peut-être pas en mesure de désactiver l'hyper-threading.
J'ai aussi trouvé ce post sur Superuser:
Désactiver l'hyperthreading dans le registre Windows 7
Une des réponses semblait particulièrement utile, mais complexe, en ce qui concerne les hexadécimaux et l’ordinateur en question était un HP. Je ne sais pas si cela compte.
Il semble y avoir beaucoup d’autres articles ici sur les hyperthreads, mais celui qui précède se rapproche le plus de la situation que j’ai lue.
Désolé si cette question est un doublon. Si je dois fournir des informations supplémentaires ou clarifier mes préoccupations, je le ferai avec plaisir.
la source
Réponses:
Pourquoi n'y a-t-il pas d'option dans le BIOS?
Je suppose que la raison pour laquelle Dell et ses amis n’ajoutent pas souvent d’option pour désactiver cette option est qu’il s’agit rarement d’une bonne idée. En moyenne, cela ralentira votre ordinateur (ou, d'un point de vue différent, les ordinateurs de vos concurrents seront plus rapides).
Cela dit, regardons quelques exemples imaginaires:
Que fait HT?
1 noyau, pas d'hyper-threading
2 noyaux, pas d'hyper-threading
Maintenant, les noyaux avec hyper-threading. Ceux-ci agissent comme deux noyaux, mais pas deux noyaux complets. Ce que Intel définit comme l'hyper-threading a un peu changé au fil du temps, mais cela revient généralement à cela. Un processeur récupère les données de la mémoire et les calcule. S'il n'a pas besoin du bus de mémoire, une seconde partie de la CPU peut effectuer un travail limité. Étant donné que tout le matériel n'est pas dupliqué, vous ne disposez pas de deux cœurs complets. Cependant, avec un matériel supplémentaire limité (10%?), Vous gagnez en moyenne 30% de vitesse. *1
1 cœur, avec - 1 processus lié au processeur en cours d'exécution, pouvant s'exécuter à une vitesse maximale. (100%) - 2 processus liés à la CPU en cours d'exécution. Le processeur devra basculer entre les deux. Cependant, il a du matériel supplémentaire. La vitesse nette sera environ 30% plus rapide (disons, vitesse 133% pour un seul cœur)
Etc.
Voilà pour l'introduction à HT.
Ces% fictifs sont-ils réels?
Non. Tout d’abord, vous perdrez en efficacité à cause des frais généraux. (10 tâches sur une CPU ne s'exécutent pas plus lentement qu'une seule tâche sans commutateurs de contexte et avec tout le cache pour ses données).
Deuxièmement, j'ai totalement ignoré le turbo boost car cela compliquerait l'explication.
Qu'est-ce que mon ami voulait peut-être dire?
Regardons votre CPU 4 core 8 bandes comme ceci:
Core 1, CPU 1 (réel)
Core 1, CPU 2 (avec HT)
Core 2, CPU 3 (réel)
Core 2, CPU 4 (avec HT)
Core 3, CPU 5 (réel)
Core 3, CPU 6 (avec HT)
Core 4, CPU 7 (réel)
Core 4, CPU 8 (avec HT)
Si je lance deux tâches, je ne veux pas les deux sur CPU1 et CPU2 (car elles partagent un noyau réel) et le résultat net est près de la moitié de la vitesse possible. C'est peut-être ce que votre ami voulait dire.
Bien que vrai, je pense que vous n'avez pas besoin de vous inquiéter. Le planificateur de fenêtres est suffisamment intelligent pour allouer d’abord les processus aux processeurs 1,3,5,7 et seulement ensuite aux processeurs 2,4,6,8.
* 0 Un processus lié à la CPU est un processus limité par la CPU. Si un processus attend DiskIO et que la CPU est inactive, vous obtenez des résultats totalement différents.
* 1 Prenez ces chiffres avec un grain de sel. Ils ne sont pas précis. Ils varieront par génération de processeur et même par modèle de processeur. Ils varieront selon les programmes. Et ce que Intel appelle l'hyper-threading a changé depuis les premières générations de CPU. Cependant, ils donnent une idée approximative.
la source