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

Composants Discussion :

les nouveaux processeurs et la programmation


Sujet :

Composants

  1. #1
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut les nouveaux processeurs et la programmation
    Bonjour,

    à force de threader, processussiser (je m'invente une terminologie) et forker, j'en suis arrivé à me poser une question toute bête que je vous soumets.
    Si l'on part du principe qu'une instruction est difficilement découpable en 2 morceaux, pour une même application programmée de manière "classique" il est difficile de croire que les nouveaux processeurs type "Dual Core" ou "Quad Core" ou tout ce que vous voulez-Core apporte grand chose.
    Mais si on utilise les processus et les thread dans une même application, au risque de compliquer (parfois inutilement) la tâche, est-ce que l'on va gagner significativement en performances et dans quelle mesure?

    Est-il judicieux de s'orienter vers ce type de programmation et, est-il raisonable de penser que c'est à peu près le seul moyen de profiter pleinement de ce type de processeurs?

    Est-ce que la façon dont l'OS lui-même est codé ne constituera pas un frein au gain de performance potentiel d'une programmation multi-thread destinée à ce genre de processeurs?

    Désolé de lancer des questions qui sont limite "débat" mais comme il y a quotidiennement de nouvelles "news" sur ces processeurs et que je suis en plein l'apprentissage des processus et des threads je trouvais ca plutot bien venu
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    De plus en plus, on se dirige vers de la programmation parallèle (qui existe depuis très longtemps), mais automatique.

    C'est à dire qu'en programmation parallèle, tu découpes toi-même ton programme pour qu'il s'exécute sur différents processeurs. Certes l'exercice est contraignant, mais les gains peuvent être énormes (jusqu'à 1/N en théorie, N étant le nombre de processeur).

    Là, il s'agit en gros de la même chose, mais par thread/processus. C'est à dire que lorsque tu créés un thread, celui-ci peut être exécuté sur un second core. mais l'OS est incapable de savoir si c'est intelligent de le faire ou non : un thread qui va s'exécuter pendant un temps long, mais qui demande à être synchronisé régulièrement avec un autre processus ne fera pas gagner grand chose...

    Donc oui, il est possible de gagner du temps d'exécution en se mettant à la programmation parallèle. Ceci dit, c'est plus complexe à faire qu'à dire, car il s'agit d'une façon de penser différente, pas d'une implémentation différente.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    Le problème est que paralléliser une application n'est pas forcement utile. En effet il y aura toujours des traitements purement séquentiel ne pouvant pas être parallélisé.
    Et puis le problème de la synchronisation fait que le gain de performance n'est pas en *N.
    Il faut aussi voir le problème du coût. En effet la majeur partie des developpeur ont presque jamais touché à la programmation paralélle qui induit pas mal de contrainte, et de mécanisme pas simple. Enfin je divague un peu.

    Outre la programmation en paralléle, il y a des labos d'universités qui travaillent sur des compilateurs permettant de rendre paralléle certaine portion de code d'application séquantielles. Ils travaillent en partie sur la "parallélisation" des boucles.

  4. #4
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Certes c'est contraignant et pas toujours utile, mais dans l'idée, si un programme est concu de cette façon, oles nouveaux processeurs de type dual core etc permette bien de réaliser un gain de temps et ce, quel que soit l'OS cad que les OS type Linux /win sont capables pour une meme application qui lancerait plusieurs processus de faire un ordonnancement et une repartition qui fait gagner ce temps et ne vont pas se contenter de dire "Ok, il y a 2 PID la mais ca a été crée dans le même processus, le 2 eme est un processus fils alors je le balance sur le même processeur". Au quel cas on gagne rien du tout sauf d'etre déchargé éventuellement d'autre application dont le processus aura encombré le processeur.
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  5. #5
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    Justement le support des multi-processeurs depend de l'OS. Mais bon la plupart des OS récents les supportent sans trop de problème.

  6. #6
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 379
    Points
    20 379
    Par défaut
    Citation Envoyé par cladsam

    Est-il judicieux de s'orienter vers ce type de programmation et, est-il raisonable de penser que c'est à peu près le seul moyen de profiter pleinement de ce type de processeurs?

    Est-ce que la façon dont l'OS lui-même est codé ne constituera pas un frein au gain de performance potentiel d'une programmation multi-thread destinée à ce genre de processeurs?
    C'est le programmeur qui décide de créer des processus fils ( par exemple avec fork dont tu parles ) et à l'OS de gérer un programme parallèle à celui du parent en exécution.
    Maintenant d'après la question posée, ce que je comprends revient également à se poser une autre question : est-ce que les OS sont assez optimisés pour exploiter les nouveaux processeurs ( notamment le dual-core d'Intel ) ?
    Si on veut exploiter les fonctionnalités des nouveaux processeurs il faut souvent faire des optimisations par soi-même en assembleur ou bien en disposant de bibliothèques logicielles adéquates pour Java, .NET,C++ etc...
    Par exemple je citerais VTune d'Intel qui effectue les optimisations de code adéquates en assembleur.

    Est-il judicieux de s'orienter vers de ce type de programmation ?
    C'est géré de manière transparente par l'OS ; le programmeur ne peut qu'utiliser des fonctions particulières de l'OS par exemple les API win32 de Windows.
    Sous Windows par ex. c'est incontournable on ne peut pas faire autrement sinon cela provoque une instabilité du système.

    Mais comme le disent Gangsoleil et Laktrid c'est pas forcément nécessaire de faire de la programmation multiprocessus.
    C'est valable pour des taches longuess en exécution

  7. #7
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Citation Envoyé par lakitrid
    Justement le support des multi-processeurs depend de l'OS. Mais bon la plupart des OS récents les supportent sans trop de problème.
    Oki et comment peut-on avoir connaissance de cette prise en charge par l'OS, par exemple sous un linux, c'est pareil quel qu'il soit à version du noyau égale ou ca va dépendre de plein d'autre chose et donc être spécifique à une distribution?

    D'autr epart je me rend bien compte de la difficulté et parfois de l'inutilité d'une telle démarche cela dit c'est à caractère purement informatif et je pense que ca dois surtout trouver son utilité la où de nombreux calculs doivent être fait ... genre dans une application de modélisation 3D.

    Pourriez-vous m'en dire plus sur les recherches universitaires dont vous avez parlé?
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  8. #8
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    En ce qui concerne le support des multiprocesseur ca se passe dans le noyau, donc ce n'est pas spécifique aux distributions qui reprennent les noyau officiels.
    Mais il est toujours possible de tomber sur un noyau patché qui contient un ordonnanceur différent ne supportant pas les multiprocesseur. Mais je ne connais pas de telles distributions.

    Pour les infos je te donne une page de mémoire, je ne peux pas verifier sont contenu d'ici (vive les proxy avec liste blanche ) :

    http://www.science.uva.nl/research/csa/microgrids.html
    http://www.science.uva.nl/research/csa/

  9. #9
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    J'ai commencé a regarder ce lien c'est assez sympathique merci, si t'en retrouve d'autre je suis preneur
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  10. #10
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Lien vers un labo qui fait des recherches en parallélisme :
    http://www-anp.lip6.fr/adcs/index.html

    La page principale : http://www-anp.lip6.fr/
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 140
    Points
    140
    Par défaut
    Je pense avant tout qu'il faut se poser la question de l'utilisation qu'on fait de ces threads / fork.

    Si pour un calculateur il est forcement judicieux de pouvoir exécuter certains calcule en parallèle afin d'avoir un gain de performance, pour une application visuelle l'intérêt est surtout d'ordre pratique (afin de s'affranchir des limites de gestion visuel imposé par la séquencialité) et non pour un réel gain de temps.

    Il convient donc de s'interroger si le parallélisme est une nécessité qui se généralise ou voué à n’être utile qu’à certains secteurs d’activités

  12. #12
    Membre émérite
    Avatar de lakitrid
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 535
    Points : 2 388
    Points
    2 388
    Par défaut
    Citation Envoyé par Tnopy
    Je pense avant tout qu'il faut se poser la question de l'utilisation qu'on fait de ces threads / fork.

    Si pour un calculateur il est forcement judicieux de pouvoir exécuter certains calcule en parallèle afin d'avoir un gain de performance, pour une application visuelle l'intérêt est surtout d'ordre pratique (afin de s'affranchir des limites de gestion visuel imposé par la séquencialité) et non pour un réel gain de temps.

    Il convient donc de s'interroger si le parallélisme est une nécessité qui se généralise ou voué à n’être utile qu’à certains secteurs d’activités
    Aussi utile que de passer de processeur a quelques khz à des processeur recent ...

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/03/2013, 12h07
  2. Réponses: 1
    Dernier message: 26/03/2010, 15h42
  3. Configurer les nouveaux programmes ?
    Par 1l1ll1l1 dans le forum Windows XP
    Réponses: 6
    Dernier message: 06/04/2008, 17h36

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