Existe-t-il un exemple de code illustrant les performances Hyperthreading d'Intel? Est-il accessible du tout à partir de l'espace utilisateur, ou ce processeur fait-il tout le travail transparent pour le programmeur? C'est pour C, Linux.Exemple de code hyperthreading
Répondre
La performance de l'hyperthreading dépend de nombreux facteurs et est difficile à estimer.
Juste pour expliquer brièvement Hyperthreading:
- Chaque noyau a plus d'un jeu de registres, mais pas d'unités d'exécution supplémentaires
- Les hyperthreads sont programmés plus ou moins uniformément
Donc, vous ne Vraiment obtenir des performances supplémentaires de hyperthreads si les deux threads s'exécutant sur le même noyau utilisent des unités d'exécution différentes et chaque thread sur son propre aurait trop de dépendances adata. Par exemple, un thread ne fait que des opérations entières, l'autre un seul virgule flottante. Vous pouvez ensuite voir des performances supplémentaires car vous utilisez plus d'unités d'exécution par cycle. Mais cela dépend à son tour de la façon dont votre système d'exploitation planifie les threads sur les hyperthreads. Du point de vue de l'OS, chaque hyperthread est un CPU logique. Donc, c'est entièrement à l'ordonnanceur que mettre là et quand. En pratique, les hyperthreads vous procurent au maximum 10-20% de performance en plus. Sur notre HPC, nous les avons désactivés (principalement pour des raisons de licence).
Pour répondre à votre question actuelle: vous ne pouvez pas déployer de code directement sur des hyperthreads. L'OS fera cela pour vous. Vous pouvez définir des affinités de planification pour vos threads d'utilisateur, mais il appartient toujours au planificateur de déployer réellement vos threads. Ceci est fait de manière transparente pour le programmeur. Un bon ordonnanceur déploiera votre code uniformément d'abord sur les cœurs et ne recourra aux hyperthreads que si tous les cœurs sont occupés.
Le coltrol utilisateur syscalls
que vous recherchez est sched_setaffinity et pthread_setaffinity_np.
L'exemple de code suivant va déployer deux threads sur les CPU logiques 0 et 1 qui correspondront aux deux hyperthreads sur le premier noyau logique de la première socket si hyperthreads sont activés. Pourtant, il appartient au planificateur de les mettre réellement là. Si ces hyperthreads sont occupés alors votre code va dormir:
#define _GNU_SOURCE
#include <pthread.h>
#include <sched.h>
#include <stdlib.h>
void * my_thread(intptr_t cput_o_run_on) {
cpuset_t cpuset;
CPU_ZERO(&cpuset);
CPU_SET(cput_o_run_on, &cpuset);
pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset);
// force a rescheduling
sched_yield();
// do something useful
return NULL;
}
int main() {
pthread_t thread;
pthread_create(&thread, NULL, my_thread, 0);
pthread_create(&thread, NULL, my_thread, 1);
for (;;);
return 0;
}
- 1. Hyperthreading rend mon code plus lent?
- 2. OpenMP: n'utilisez pas les cœurs hyperthreading (moitié `num_threads()` w/hyperthreading)
- 3. Disable Hyperthreading ligne
- 4. Hyperthreading - vraiment des noyaux X2?
- 5. Vitesse de traitement d'un noyau avec hyperthreading
- 6. Comment désactiver Windows 7 Hyperthreading
- 7. Hyperthreading & Multi-core lors de la compilation
- 8. Mesurer correctement l'utilisation du processeur avec HyperThreading?
- 9. UISearchBar Exemple de code
- 10. Exemple de code GDK
- 11. Jmeter exemple de code
- 12. CATiledLayer: Exemple de code
- 13. EDMessage Exemple de code?
- 14. Exemple de code JSONRequest.get
- 15. onFocusChange exemple de code?
- 16. Exemple de code WebRTC
- 17. Exemple de code FlexGanttFX
- 18. Exemple de code d'accessibilité
- 19. WatchKit exemple de code de code bug
- 20. Exemple avec code à code
- 21. Exemple de code de paiement
- 22. Le temps processeur est-il pertinent pour Hyperthreading?
- 23. nombre optimal de threads lorsque hyperthreading est désactivé
- 24. exemple de code MoviePlayer problème
- 25. Exemple de code pour ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering?
- 26. Exemple de code d'erreur openPIV
- 27. Exemple de code pour Subversion
- 28. Exemple de petit code simplifié
- 29. wwdc 2013 exemple de code
- 30. javaemvreader android exemple de code