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

  FORUM HardWare.fr
  Programmation
  C++

  [C/C++] Choisir sur quel processeur/coeur executer du code

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] Choisir sur quel processeur/coeur executer du code

n°1793349
GreGoireP
Posté le 29-09-2008 à 14:27:41  profilanswer
 

Bonjour,
Je me demandais si il était possible grace à l'aide de la programmation système d'avoir la main sur le processeur/coeur qui execute le code d'un thread ou d'un processur précis (pour, par exemple vouloir paralelliser du calcul)
 
 
 
Merci,
Grégoire

mood
Publicité
Posté le 29-09-2008 à 14:27:41  profilanswer
 

n°1793356
Joel F
Real men use unique_ptr
Posté le 29-09-2008 à 14:38:41  profilanswer
 

en general tu t'en moques car la partie parallélisation passe rarement par ça. SOus posix pthread je pense que c'ets pas possible (ou du moins compliqué à bidouiller via affinity) et sous windaube aucune idée.
 
Qu'est-ce que tu cherches à paralléliser ?

n°1793359
masklinn
í dag viðrar vel til loftárása
Posté le 29-09-2008 à 14:46:35  profilanswer
 

Joel F a écrit :

en general tu t'en moques car la partie parallélisation passe rarement par ça. SOus posix pthread je pense que c'ets pas possible (ou du moins compliqué à bidouiller via affinity) et sous windaube aucune idée.


Sous windows c'est pareil, il faut bidouiller l'affinity, c'est bien dégueux et je suis même pas sûr que ça soit gérable à une résolution inférieure au processus


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1793361
GreGoireP
Posté le 29-09-2008 à 14:48:50  profilanswer
 

Rien de précis mais je travaille sur un protocole pour paralelliser un calcul via le réseau et je trouverais bête de ne pas exploiter tous les coeurs de chaque machine à cette échelle là.
 
J'ai remarqué qu'en lançant plusieurs processeur l'ordonancement se débrouillait déja bien, mais si je lance N threads (ou N est le nombre de coeurs) et que deux se lancent sur le même je perds tout interêt....
 
Et puis même, c'est quand même bête de ne pas pouvoir exploiter les coeurs à notre guise en tant que développeurs :/
 
Je continue à chercher!

n°1793362
Joel F
Real men use unique_ptr
Posté le 29-09-2008 à 14:50:17  profilanswer
 

bah c'est pas à l'OS de le faire :E
en gros, il faut que ton binaire pour une machine N coeurs utilise explicitement les k coeurs en interne ...
 
Y a pas de magie en parallélisme ;)

n°1793366
masklinn
í dag viðrar vel til loftárása
Posté le 29-09-2008 à 14:53:54  profilanswer
 

Joel F a écrit :

bah c'est pas à l'OS de le faire :E


Ben si c'est bien à l'OS (ou au scheduler de l'OS en tout cas) de mapper les threads/process sur des cores le plus efficacement possible, c'est à ça qu'il sert quand même, un peu :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1793372
Joel F
Real men use unique_ptr
Posté le 29-09-2008 à 14:59:59  profilanswer
 

oui mais c'est pas à lui de paralléliser le dedans des applis je voulais dire :E
 
Après si les exe sont indépendant, oui faut y aller à coup de nice ou de jesaisplusquoi au niveau système mais ca reste moche.

n°1793377
theshockwa​ve
I work at a firm named Koslow
Posté le 29-09-2008 à 15:05:21  profilanswer
 

sous windows, de toute façon, l'affinité ne garantit aucunement que ton thread va tourner sur le processeur (logique) que tu lui spécifies, ca te dit juste que le scheduler tentera de le mettre plutôt sur celui-ci
 
Et si, ca se sélectionne au niveau du thread à coup de setthreadaffinity (à coup de masque d'affinité pour setter plusieurs processeurs) ou à coup de SetThreadIdealProcessor (et là, tu ne précises que le numéro du processeur préféré)

n°1793378
Elmoricq
Modérateur
Posté le 29-09-2008 à 15:08:05  profilanswer
 

GreGoireP a écrit :

Rien de précis mais je travaille sur un protocole pour paralelliser un calcul via le réseau et je trouverais bête de ne pas exploiter tous les coeurs de chaque machine à cette échelle là.

 

Mais tu fais ça comment ?
Je m'explique : en toute logique t'as un processus père et n processus fils, répartis sur le réseau. En ce cas il suffit de lancer autant de fils qu'il y a de CPUs disponibles sur les machines cibles, comme ça l'OS se charge de la répartition des processus sur les coeurs disponibles. Et le père n'a qu'à répartir les taches sur les fistons déclarés sans chercher plus à comprendre, non ?
En tout cas c'est comme ça que c'est fait chez nous. [:cosmoschtroumpf]


Message édité par Elmoricq le 29-09-2008 à 15:11:40
n°1793381
GreGoireP
Posté le 29-09-2008 à 15:17:14  profilanswer
 

Bien sûr, c'est ce que je voulais faire et surement ce que je vais faire, mais lancer plusieurs processus ne garantit en aucun cas que chaque processus aura son propre coeur/processeur :)

mood
Publicité
Posté le 29-09-2008 à 15:17:14  profilanswer
 

n°1793386
masklinn
í dag viðrar vel til loftárása
Posté le 29-09-2008 à 15:24:29  profilanswer
 

GreGoireP a écrit :

Bien sûr, c'est ce que je voulais faire et surement ce que je vais faire, mais lancer plusieurs processus ne garantit en aucun cas que chaque processus aura son propre coeur/processeur :)


Mais ça tu t'en contrefous, le scheduler de l'OS est censé se démerder pour que les ressources soient utilisées de la meilleure manière possible, oui il peut mapper 2 de tes threads sur le même core si un autre core est bouffé par une app qui prend des ressources, mais qu'est-ce que tu en as à faire?

Message cité 1 fois
Message édité par masklinn le 29-09-2008 à 15:24:57

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1793438
Joel F
Real men use unique_ptr
Posté le 29-09-2008 à 16:15:02  profilanswer
 

masklinn a écrit :


Mais ça tu t'en contrefous, le scheduler de l'OS est censé se démerder pour que les ressources soient utilisées de la meilleure manière possible, oui il peut mapper 2 de tes threads sur le même core si un autre core est bouffé par une app qui prend des ressources, mais qu'est-ce que tu en as à faire?


 
Exactement, c'est complètement pas ton problème

n°1793529
Taz
bisounours-codeur
Posté le 29-09-2008 à 18:14:11  profilanswer
 

Joel F a écrit :


 
Exactement, c'est complètement pas ton problème


L'erreur c'est aussi de penser qu'intuitivement on va faire mieux que l'ordonnanceur.
Je pense que le seul moment où ça peut se justifier (setaffinity, etc) c'est quand les threads ont des priorités différentes, on sait que jusqu'à des version récentes de linux ça pouvait donner des trucs bizarres.

n°1846968
weblook$$
Posté le 04-02-2009 à 09:31:32  profilanswer
 

et comment peut-on voir si notre Appli est  utilise tel ou tel coeur ??

n°1847024
Joel F
Real men use unique_ptr
Posté le 04-02-2009 à 12:02:55  profilanswer
 

ps :€

n°1847030
weblook$$
Posté le 04-02-2009 à 12:11:48  profilanswer
 

comment  :( ?


Message édité par weblook$$ le 04-02-2009 à 12:34:40

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

  [C/C++] Choisir sur quel processeur/coeur executer du code

 

Sujets relatifs
code::blocks, fentre d'erreurs disparue[C++] gestion de la mémoire pour une fonction renvoyant un pointeur
[C] Probleme avec un PipeAppel d'une fonction mysql dans du code javascript
Je n'arrive a pas a compiler avec code blocks[résolu]requete http en php, recuperer le code source d'une page web
[ASPX] [C#] Chercher et afficher une ligne dans un fichier ExcelProblème d'insertion dans une table via une interface Visual C++
[C] Erreur que je trouve pas :DCPU saturée et durée de code excessive
Plus de sujets relatifs à : [C/C++] Choisir sur quel processeur/coeur executer du code


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