Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1148 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Processeur d'exécution

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Processeur d'exécution

n°1450662
argusazure
Posté le 02-10-2006 à 10:51:13  profilanswer
 

Bonjour, j'ai un programe multithread sur une machine multiprocesseurs et je souhaiterais savoir comment récupérer le processeur (numero du processeur et non son type) sur lequel s'exécute le code qu'il y a dans un thread.  
Si vous avez une méthode simple sous windows XP, je suis preneur. Merci


Message édité par argusazure le 02-10-2006 à 11:50:18
mood
Publicité
Posté le 02-10-2006 à 10:51:13  profilanswer
 

n°1450665
_darkalt3_
Proctopathe
Posté le 02-10-2006 à 10:57:46  profilanswer
 

Si sous windows, cpuid, smbios, WMI, fonction recherche du forum


---------------
Töp of the plöp
n°1450670
argusazure
Posté le 02-10-2006 à 11:13:44  profilanswer
 

_darkalt3_ a écrit :

Si sous windows, cpuid, smbios, WMI, fonction recherche du forum


Tu es sur que ce n'est pas pour récuppérer les caractéruistiques du processeur ce que tu proposes?

n°1450676
_darkalt3_
Proctopathe
Posté le 02-10-2006 à 11:21:35  profilanswer
 

tu veux parler du serial du proc ?


---------------
Töp of the plöp
n°1450682
argusazure
Posté le 02-10-2006 à 11:27:30  profilanswer
 

Bon on va faire simple:  j'ai 2 processeurs sur ma machine et je veux savoir si mon thread s'exécute sur le processeur 1 ou sur le processeur 2.

n°1450691
karlkox
Posté le 02-10-2006 à 11:40:44  profilanswer
 
n°1450708
argusazure
Posté le 02-10-2006 à 11:51:01  profilanswer
 

Ouep c'est exactement ça que je cherche. Sauf que ça existe pas sous windows xp. Bon je cherche dans cette direction, on s'approche.

n°1450713
_darkalt3_
Proctopathe
Posté le 02-10-2006 à 11:57:10  profilanswer
 

En fait ca existe sous .net depuis le 1.1 si je ne m'abuse, donc dispo sous .net.


---------------
Töp of the plöp
n°1450715
argusazure
Posté le 02-10-2006 à 12:00:17  profilanswer
 

_darkalt3_ a écrit :

Si sous windows, cpuid, smbios, WMI, fonction recherche du forum


ok on doit pouvoir avec cpuid en regardant le processeur actif. Une fonction comme GetCurrentProcessorNumber() aurait été plus simple mais bon ...

n°1450793
straffo
Posté le 02-10-2006 à 14:36:13  profilanswer
 

Autre solution SetThreadIdealProcessor, tu force un thread a s'exécuter sur une cpu donnée.

mood
Publicité
Posté le 02-10-2006 à 14:36:13  profilanswer
 

n°1450923
argusazure
Posté le 02-10-2006 à 17:09:46  profilanswer
 

straffo a écrit :

Autre solution SetThreadIdealProcessor, tu force un thread a s'exécuter sur une cpu donnée.


Merci mais le but était plutot de contrôler que l'os distribue bien mes threads sur des processeurs différent.

Message cité 2 fois
Message édité par argusazure le 02-10-2006 à 17:10:16
n°1451122
boulgakov
Posté le 02-10-2006 à 23:31:30  profilanswer
 

argusazure a écrit :

Merci mais le but était plutot de contrôler que l'os distribue bien mes threads sur des processeurs différent.


 
Je ne vois pas la raison qui l'empêcherait de le faire, sauf si tu t'es raté dans la synchro et que tes threads ne tournent jamais en même temps. Est-ce possible de mettre une grosse boucle de calcul au milieu et d'en lancer plusieurs (2 suffisent) ? Tu regardes ensuite l'occupation CPU (par contre sous Windows je ne sais pas si le gestionnaire de tâches différencie les CPU) et tu devrais assez vite être convaincu que ça marche.
 

n°1451536
straffo
Posté le 03-10-2006 à 15:47:08  profilanswer
 

argusazure a écrit :

Merci mais le but était plutot de contrôler que l'os distribue bien mes threads sur des processeurs différent.


 
Et pourquoi il le ferait (ou ne le ferait pas d'ailleur) pour ce genre de gestion il vaut mieux faire confiance à l'OS.
 
Ca dépend du contexte par exemple si sur la 2eme cpu il y a un gros process  
bien gourmand ou serait l'intéret de ventiller des threads sur une cpu au taquet ?

n°1454715
argusazure
Posté le 10-10-2006 à 10:45:29  profilanswer
 

straffo a écrit :

Et pourquoi il le ferait (ou ne le ferait pas d'ailleur) pour ce genre de gestion il vaut mieux faire confiance à l'OS.
 
Ca dépend du contexte par exemple si sur la 2eme cpu il y a un gros process  
bien gourmand ou serait l'intéret de ventiller des threads sur une cpu au taquet ?


Oui je suis d'accord que c'est l'os qui doit ventiler les threads. Mon contexte est : une application doit traiter une tache les plus vite possible sur une machine bi proc. C'est la seule application qui tourne. Dans ce cas, je m'attend à voir les treads ventilés sur les 2 cpu. J'aurais préféré valider de façon un peu plus propre que de regarder dans le gestionnaire des taches mais bon on va s'en contenter.  
Merci à tous!

n°1455622
tbp
Posté le 11-10-2006 à 16:57:59  profilanswer
 

SetThreadIdealProcessor ne force pas une thread à s'executer sur un cpu/core particulier, c'est seulement une indication. Pas plus d'ailleurs que cpuid ne retourne de numero logique puisque celà n'a pas de sens localement mais seulement au niveau de l'OS.
 
Pour effectivement forcer l'execution sur un cpu/core/noeud - ou plusieurs - il faut toucher le masque d'affinité, cf SetProcessAffinityMask/SetThreadAffinityMask. Notons qu'xp n'est que partiellement NUMA-aware, neanmoins les allocations, par exemple via VirtualAlloc, serons affectées; la localité de la mémoire est une excellente raison pour tripoter le masque d'affinité. Et puis ce n'est pas comme si le scheduler de windows était un modele du genre: il a une facheuse et lamentable tendance au pingpong.
 
PS: les k8 (athlon64 & co) utilisent un modèle NUMA et non un basique SMP comme les Intel, ce qui n'est pas sans consequences.


Message édité par tbp le 11-10-2006 à 17:06:44

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Processeur d'exécution

 

Sujets relatifs
Compil C++ en RAM & charge processeurVisual C++ : Problème d'éxécution
Temps d'execution d'un scriptEmpecher l'exécution d'un script depuis le navigateur
[ Batch Dos ] Ordre d'execution batch dosrmi probleme d'execution
[vb6] erreur à l execution alors que pas au debuggageattendre fin execution fonction
Charger une page après execution du javascriptRecuperer la trace d'execution
Plus de sujets relatifs à : Processeur d'exécution


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR