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

Dotnet Discussion :

Gestion multi coeurs


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut Gestion multi coeurs
    Bonjour,

    je suis tombé sur un article assez sympa au sujet de la gestion des architectures multicores/multiprocesseurs:
    http://sebastiencourtois.wordpress.c...tiprocesseurs/

    J'ai fait un teste par défaut avec 2 Thread, sans utilisé les fonctionnalités du Framework v4 et dans le gestionnaire de tâche je remarque que mes 2 coeurs (j'ai un Core 2 Duo) sont bien utilisé.

    Normal?

    J'ai pas bien compris...

    A sinon, dans Microsoft Visual Studio, à coté de debug/release, y'a un combobox au sujet des Core, utile?

    Utiliser Task Parallel Library apporte beaucoup dans le cas d'une application qui utilise déjà, sans trop savoir pourquoi, ni comment, les cores disponible?

    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Par défaut
    Bonjour,

    Je suis l'auteur de l'article en question.

    Normalement, si le test que tu as fait est "normal" (c'est à dire sans aucune librairie de Multithreading), seul un seul de tes cores devrait être solicité.

    Si on prend l'exemple suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    double val = 0;
     do
    {
        val++;
    } while (val < 1000000000);
     Console.WriteLine("Terminé ");
     Console.ReadLine();
      Parallel.For(0, 1000000000, (int v) => { int i = 0; i++; });
       Console.WriteLine("Terminé ");
    Console.ReadLine();
    Sur mon Quad Core, j'ai uniquement un Core qui travaille vraiment sur le While (CPU Meter a 25 % avec un core travaillant quasiment à fond... les autres cores travaillent très légèrement mais pour d'autres tâches que le programme ci dessus). Sur le Parallel.For, j'ai l'ensemble des mes cores qui travaillent et mon CPU est a 95% / 100 %.

    "J'ai fait un teste par défaut avec 2 Thread, sans utilisé les fonctionnalités du Framework v4 et dans le gestionnaire de tâche je remarque que mes 2 coeurs (j'ai un Core 2 Duo) sont bien utilisé."
    Je suis étonné par ton commentaires et j'aimerais bien voir ton code test.

    A sinon, dans Microsoft Visual Studio, à coté de debug/release, y'a un combobox au sujet des Core, utile?
    Selon moi non. En tout cas pas dans l'utilisation de TPL.

    Utiliser Task Parallel Library apporte beaucoup dans le cas d'une application qui utilise déjà, sans trop savoir pourquoi, ni comment, les cores disponible?
    Pas exactement. Par défaut, une application est mono-core donc ne peut utiliser qu'un core à la fois. les classes Thread ou la TPL permet d'utiliser ces autres cores en permettant là création des threads qui seront ensuite exécutés par chacun des cores.
    La TPL est une boite à outils pour transformer facilement une application classique en application multithreadé pouvant utiliser plusieurs cores simultanément. TPL permet de paralléliser très facilement les boucles notamment.
    Attention, tous les algorithmes ne peuvent pas être paralléliser avec TPL et certains algorithmes ne sont pas plus rapide après parallélisation.

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Smallpox Voir le message
    Attention, tous les algorithmes ne peuvent pas être paralléliser avec TPL et certains algorithmes ne sont pas plus rapide après parallélisation.
    J'ajouterais, pour avoir fait quelques essais avec le Parallel Framework CTP sorti fin 2009 et tournant sous framework 3.5, que, suivant la durée des itérations considérée, la parallélisation peut même ralentir le traitement. C'est le cas quand l'overlap lié au lancement des threads est d'un temps du même ordre que la durée d'exécution de l'itération.

    Par ailleurs, si c'est intéressant sur un poste de travail, il convient d'être nettement plus méfiant dans le cas d'une application serveur, où une application parallélisée peut ralentir les autres applications par effet de préemptions des Cores.

  4. #4
    Membre du Club
    Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Par défaut
    J'ajouterais, pour avoir fait quelques essais avec le Parallel Framework CTP sorti fin 2009 et tournant sous framework 3.5, que, suivant la durée des itérations considérée, la parallélisation peut même ralentir le traitement. C'est le cas quand l'overlap lié au lancement des threads est d'un temps du même ordre que la durée d'exécution de l'itération.
    C'est toujours présent sur la version finale comme dans toute applications multithreadé. En général, je teste les deux algo (mono et multi thread) pour les algorithmes un peu lourd. C'est l'un des avantages de TPL : mettre en place un test multithreadé à partir d'un algorithme monothreadé est très simple/rapide.

    Par ailleurs, si c'est intéressant sur un poste de travail, il convient d'être nettement plus méfiant dans le cas d'une application serveur, où une application parallélisée peut ralentir les autres applications par effet de préemptions des Cores.
    Surtout s'il y a des frontaux sur le serveur... Dans ce cas, le serveur IIS va bien ramer et l'expérience utilisateur sera pas géniale.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Smallpox Voir le message
    Surtout s'il y a des frontaux sur le serveur... Dans ce cas, le serveur IIS va bien ramer et l'expérience utilisateur sera pas géniale.
    A priori une appli où j'estime nécessaire de paralléliser les tâche je la mets plutôt sous forme de service windows WCF (je n'ai pas WAS pour l'instant) que sous IIS.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut
    Merci pour les précisions,

    je vais tester les fonctionnalités que tu évoques dans ton article et voir si de grosses différences apparaissent.

    Merci encore pour l'article et surtout pour tes précisions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion processeur multi-coeurs
    Par doctorant_en_gallère dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/02/2011, 09h07
  2. Gestion multi-langues et JMenuItem
    Par TheReturnOfMuton dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 19/06/2006, 15h08
  3. [Delphi.net] : Gestion multi form
    Par PH69 dans le forum Delphi .NET
    Réponses: 5
    Dernier message: 20/03/2006, 22h04
  4. Gestion multi-utilisateur
    Par charliejo dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/01/2006, 02h45
  5. [Fichier] Gestion multi accès d'un fichier
    Par Rayek dans le forum Langage
    Réponses: 4
    Dernier message: 24/11/2005, 14h21

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