Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre régulier
    Inscrit en
    novembre 2006
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 350
    Points : 79
    Points
    79

    Par défaut Multithread sur plusieurs proc

    Bonjour,

    Une question assez simple,
    Un programme C++ multithread avec Boost.thread sur une machine a X processeurs de Y coeurs.
    Est ce que le systeme utilisera:
    - 1 proc mais ses Y coeurs
    - Les X procs avec leurs Y coeurs ?

    J'essaye de voir sur le net mais tout est dit et son contraire.
    Comment etre certain d'utiliser toutes les ressources (X * Y coeurs) ?
    On entend parler d'OpenMp, je pensais que c'était juste une facon differente de faire du multithread, comme Boost.thread ou autre.

    Merci pour vos infos.
    Bonne fin de journée

  2. #2
    Expert Confirmé
    Homme Profil pro Pierre
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 1 727
    Points : 3 611
    Points
    3 611

    Par défaut

    Pour ce que j'en sais, c'est l'OS qui fait comme il veut.

    Je crois que pour Linux, au moins, il y a des possibilités de configuration de l'algorithme de répartition.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • La plus sotte des questions est celle qu'on ne pose pas.

    Pour faire des graphes, essayez yEd.

  3. #3
    Membre émérite
    Inscrit en
    décembre 2008
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 532
    Points : 801
    Points
    801

    Par défaut

    Avec Boost.Thread il existe hardware_concurrency() pour savoir combien de threads peuvent tourner "matériellement" en parallèle.

  4. #4
    Membre régulier
    Inscrit en
    novembre 2006
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 350
    Points : 79
    Points
    79

    Par défaut

    Bonjour,

    Je remonte ce post afin de savoir si à l'inverse il est possible de fixer le nombre de coeur utilisés pour ne pas tout monopoliser.

    Merci d'avance

  5. #5
    Membre émérite
    Étudiant
    Inscrit en
    février 2012
    Messages
    423
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2012
    Messages : 423
    Points : 803
    Points
    803

    Par défaut

    Avec OpenMP, tu as la variable d'environnement OMP_NUM_THREADS pour spécifier le nombre de threads à utiliser.
    Avec Boost.Thread, ça dépend du nombre de threads que tu créés dans le programme (?)

  6. #6
    Membre régulier
    Inscrit en
    novembre 2006
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 350
    Points : 79
    Points
    79

    Par défaut

    Ok justement c'est ce que je pensais, il faut donc que je definisse dans mon main thread le lancement de X threads seulement.
    Je vais creer un nouveau thread car ma question n'a plus lien avec le sujet ici.

    Merci

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •