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-threads et multi-core


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-threads et multi-core
    Bonjour,

    Je fais quelques tests de charge sur les 4 core de mon PC (Windows Seven) et je suis un peu surpris... J'ai créé 4 threads qui effectuent des opérations en virgule flottante et ... je ne vois que le core 1 (le 2e) qui mouline à 75% tandis que les 3 autres sont au maximum à 5%.

    Cela semblerait indiquer que c'est à moi de répartir les threads sur chaque coeur, mais comment faire? Je pensais que Windows le ferait... Si ce n'est pas le cas, c'est plutôt génant pour les applis multi-threads, si tout part dans un coeur tandis que les 3 autres ne font pas grand chose.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Par défaut
    Si tu y comprends quelque chose...

    http://synopse.info/forum/viewtopic.php?pid=205

  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
    Je survole... Ce que je comprend est que c'est bien au delà de la compétence et du temps que l'on peut mettre dans un projet, celui que je fais en tout cas.

    Une discussion intéressante sur les threads et les multi-coeurs en Delphi:

    https://forums.embarcadero.com/messa...ssageID=347942

    Pas trés positive non plus mais moins pessimiste quand même. Pour résumer, il y a bien un soucis d'utilisation des multi-coeurs, mais si l'on accepte un certain délai, ils seront quand même utilisés. Windows ne peut préempter le thread en exécution (celui qui en créer un second) pour activer le nouveau thread sur un nouveau coeur, mais le fera quand le premier donnera la main... C'est déjà cela. L'utilisation de Sleep(10) est donc fortement conseillée.

    Sachant que j'ai besoin de beaucoup de threads en parallèle, mais que ceux ci font des traitements longs, cela devrait m'aller. Encore que j'ai un doute... 4 threads tournant en continu pendant plusieurs minutes, et je ne vois pas ce transfert sur d'autres cœurs. J'avoue que j’atteins la limite de mes compétences limitées sur le sujet, ici.

  4. #4
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 991
    Par défaut
    J'ai fait un projet test, j'ai un double coeur, si je test avec un thread le processeur est utilisé à 50% mais la charge est répartie sur les 2 coeurs. avec 2 threads les 2 coeurs sont à 100%

    tes threads utilise des fichiers sur le disque ou s'échange des objects ?

    http://www.toutenvrac.org/Stress.zip

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Par défaut
    Compilé avec quelle version de Delphi ?

  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
    Avec une version plus récente que la mienne il semblerait... Je n'ai pu executer son code en le recompilant, mais je viens de comprendre mon soucis. Je faisais en systématique un Synchronize dans chaque thread, ce qui du coup invalidait tout intérêt à avoir threadé l'application il semblerait!

    En enlevant le Synchronize, j'obtiens bien le même résultat ... et même quelque chose d'intéressant, 2 threads se répartissent sur 4 core, pour un total CPU de 50%. 4 threads prennent 100% du CPU de 4 cores.

    J'aurais tendance à dire 'résolu'...

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 threading sur multi coeurs
    Par Pocus dans le forum Langage
    Réponses: 8
    Dernier message: 26/03/2010, 11h43
  3. Réponses: 15
    Dernier message: 22/12/2008, 22h01
  4. [BP7] Multi-cpu, multi-core, multi-thread et programme Pascal
    Par Transgarp dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 07/04/2008, 18h43
  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