IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

multi threading sur multi coeurs


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Par défaut multi threading sur multi coeurs
    Bonjour,

    Question basique certainement...

    Si j'exécute plusieurs threads dans un programme Delphi:

    - D7
    - BDS 2007

    et suivant différents OS:

    - XP
    - Vista
    - Seven

    Est ce que Windows va de façon optimale répartir les threads sur chaque coeur, ou il y a des précautions à prendre suivant les combinaisons sus citées?

    Merci par avançe
    Philippe/Pocus.

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Pocus Voir le message
    Bonjour,

    Question basique certainement...

    Si j'exécute plusieurs threads dans un programme Delphi:

    - D7
    - BDS 2007

    et suivant différents OS:

    - XP
    - Vista
    - Seven

    Est ce que Windows va de façon optimale répartir les threads sur chaque coeur, ou il y a des précautions à prendre suivant les combinaisons sus citées?

    Merci par avançe
    Philippe/Pocus.
    ce qu'il faut regarder c'est surtout le nombre de thread et le nombre de coeurs, pour le reste l'OS fait ce qu'il peut
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ce qu'il faut regarder c'est surtout le nombre de thread et le nombre de coeurs, pour le reste l'OS fait ce qu'il peut
    Oh ca sera simple, au plus 1 thread par coeur... ce qui m'inquiète c'est le "l'OS fera ce qu'il peut " ...

  4. #4
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut
    Citation Envoyé par Pocus Voir le message
    Oh ca sera simple, au plus 1 thread par coeur... ce qui m'inquiète c'est le "l'OS fera ce qu'il peut " ...
    Qu'est-ce qui t'inquiête la dedans ? Windows fait un très bon travail à ce sujet.
    Maintenant si vraiment ça t'inquiête, tu peux définir l'affinité de chaque thread avec les CPU disponibles, grâce à la fonction :
    SetThreadAffinityMask
    Elle te permet de restreindre les CPU que chaque thread peut utilisé, et ainsi affecter un thread à un CPU donné.

    Cependant, c'est rarement une bonne idée (à moins de vouloir définir des quotas CPU, ou de vouloir réserver un CPU pour une tâche donnée). Car si le CPU affecté est utilisé, le thread ne pourra pas s'exécuter en utilisant un autre CPU disponible...

  5. #5
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par Franck SORIANO Voir le message
    Qu'est-ce qui t'inquiête la dedans ? Windows fait un très bon travail à ce sujet.
    Ah bon !
    Moi, mon quad core : le premier travaille, le deuxième un peu, et les deux autres jamais. Et quand le premier est à fond, les deux derniers n'aident jamais.

    Citation Envoyé par Franck SORIANO Voir le message
    Cependant, c'est rarement une bonne idée (à moins de vouloir définir des quotas CPU, ou de vouloir réserver un CPU pour une tâche donnée).
    C'est justement ce qu'il serait bien que le système permette de faire.

    Citation Envoyé par Franck SORIANO Voir le message
    Car si le CPU affecté est utilisé, le thread ne pourra pas s'exécuter en utilisant un autre CPU disponible...
    Certes. Mais dans mon cas, comme j'ai deux coeurs qui ne travaillent pas, autant les occuper.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Par défaut
    Justement c'est de cela dont je voulais parler. Certains disent "laissent Win se débrouiller", d'autres pensent qu'il est mieux de lui baliser le chemin (SetThreadAffinityMask entre autre).

    C'est vrai que comme cela, j'aurai tendance à être du 2e avis (même si ce n'est pas un avis trés éclairé), parce que si justement je regarde l'utilisation des 4 coeurs de mon PC pendant qu'il fait tourner un jeu AAA (du genre avec un moteur Unreal 3 et un moteur physique, donc certainement pas du monothread) et bien je ne peux pas dire que les charges soient vraiment réparties, ce serait plutôt coeur 1 = 100%, le 2e à 25% et les 3 et 4 qui se tournent les pouces.

    Aprés, sans preuve, je ne peux dire si c'est l'optimum, mais ca n'y ressemble pas...

Discussions similaires

  1. Multi-threading, programmation multi-coeur
    Par Napech dans le forum C
    Réponses: 0
    Dernier message: 17/06/2010, 21h17
  2. Multi Select sur Multi Lists
    Par Sergejack dans le forum Flex
    Réponses: 4
    Dernier message: 22/04/2008, 11h15
  3. Multi-session sur Multi-base
    Par minimarch76 dans le forum Spring
    Réponses: 8
    Dernier message: 04/10/2007, 15h28
  4. Aide sur Multi-Threading
    Par Fred2209 dans le forum Windows
    Réponses: 7
    Dernier message: 18/04/2007, 17h26
  5. Réponses: 1
    Dernier message: 23/05/2005, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo