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

Threads & Processus C++ Discussion :

Conférence parallélisme Intel : Appel à questions


Sujet :

Threads & Processus C++

  1. #21
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bêtement, je pensais qu'il y avait plus de subtilité...

  2. #22
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Et il y en a. En fonction du nombre de coeurs disponibles, des autres programmes qui tournent... le code sera parallélisé ou pas. Et s'il est parralélisé, ce sera d'une manière qui ne crée pas de thread système, ces derniers étant lourds à créer.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #23
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Donc il y a un différence entre les threads tels que les créé une application et ceux résultant d'une parallélisation. Peut-on dire que faire du multithread pour faire de la parallélisation est une erreur de conception (même si sur une plateforme multicoeur on peut espérer un gain de performance) ?

  4. #24
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Et il y en a. En fonction du nombre de coeurs disponibles, des autres programmes qui tournent... le code sera parallélisé ou pas. Et s'il est parralélisé, ce sera d'une manière qui ne crée pas de thread système, ces derniers étant lourds à créer.
    Il me semble que ce sont des threads tout ce qu'il y a de plus standard qui sont créés, tout du moins sous Linux Quand on compile avec gcc ou icc, on doit ajouter iomp5, et surtout pthread comme bibliothèque.

  5. #25
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Et il y en a. En fonction du nombre de coeurs disponibles, des autres programmes qui tournent... le code sera parallélisé ou pas. Et s'il est parralélisé, ce sera d'une manière qui ne crée pas de thread système, ces derniers étant lourds à créer.
    Ca s'est bien passé ?

  6. #26
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Généralement, c'est parallélisé d'une manière à ne pas créer de nouveaux threads pendant le déroulement du programme: Tous les threads OpenMP sont créés à l'initialisation (généralement, autant de threads que de CPU vus par l'OS) et restent chacun sur son CPU.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #27
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Généralement, c'est parallélisé d'une manière à ne pas créer de nouveaux threads pendant le déroulement du programme: Tous les threads OpenMP sont créés à l'initialisation (généralement, autant de threads que de CPU vus par l'OS) et restent chacun sur son CPU.
    Effectivement, ça se voit bien sur un valgrind, par exemple. En revanche, l'affinité des threads n'est pas garantie, il me semble (on l'impose avec un outil interne chez nous, donc ça me semble bizarre).

  8. #28
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est possible. Pour l'affinité, c'était une supposition (qui me paraissait logique)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #29
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Donc il y a un différence entre les threads tels que les créé une application et ceux résultant d'une parallélisation.
    Le vocabulaire utilisé pendant la conférence était "task" pour un morceau de travail sérialisé qu'on exécutera en parallèle avec d'autres tasks, et "thread" pour l'objet du système gérant ce parallélisme.
    Citation Envoyé par 3DArchi Voir le message
    Peut-on dire que faire du multithread pour faire de la parallélisation est une erreur de conception (même si sur une plateforme multicoeur on peut espérer un gain de performance) ?
    Disons que manipuler directement des threads systèmes pour implémenter des tâches n'est pas optimal. Une couche d'abstraction entre les deux permet de pas mal optimiser.

    Citation Envoyé par Matthieu Brucher Voir le message
    Il me semble que ce sont des threads tout ce qu'il y a de plus standard qui sont créés, tout du moins sous Linux
    Au final, des threads classiques seront utilisés, mais il n'y a pas bijection entre threads et tasks. A ce que j'ai compris, à chaque instant un thread travaille sur une tâche, et possède une liste de tâche en attente (et si cette liste est vide, il va en piquer dans la liste des tâches en attente du thread voisin).

    Citation Envoyé par Alp Voir le message
    Ca s'est bien passé ?
    Oui. Même si en arrivant sur place, avec la vieille ville, la forteresse planant dessus du haut de son rocher, la montagne encore enneigée juste derrière, et le grand beau temps, il s'en est fallu de peu que je déchire mon billet retour

    Pour un compte rendu plus technique, je vais essayer d'y bosser un peu ce week-end.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  10. #30
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Au final, des threads classiques seront utilisés, mais il n'y a pas bijection entre threads et tasks. A ce que j'ai compris, à chaque instant un thread travaille sur une tâche, et possède une liste de tâche en attente (et si cette liste est vide, il va en piquer dans la liste des tâches en attente du thread voisin).
    C'est le principe effectivement de TBB par exemple. Mais dans OpenMP, ce n'est pas comme ça, sauf dans la version 3 où le concept de task est présent (même si les boucles for peuvent aussi être vues ainsi).

  11. #31
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Oui. Même si en arrivant sur place, avec la vieille ville, la forteresse planant dessus du haut de son rocher, la montagne encore enneigée juste derrière, et le grand beau temps, il s'en est fallu de peu que je déchire mon billet retour

    Content que ça t'ait plu !
    On se languit du feedback

    En effet, chers visiteurs, Loïc y était et va donc nous rédiger un petit compte rendu. Ce sera d'autant plus intéressant qu'Intel commence à être au centre des technologies de parallélisme en C++ (et Fortran si j'ai bien compris).

  12. #32
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Alp Voir le message
    Ce sera d'autant plus intéressant qu'Intel commence à être au centre des technologies de parallélisme en C++ (et Fortran si j'ai bien compris).
    Depuis longtemps, ils ont proposé OpenMP dans leurs compilateurs, ils ont leur propre bibliothèque MPI (OK, pas trop adaptée aux clusters, mais tout de même), ils ont promu TBB, ...

  13. #33
    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 381
    Points
    20 381
    Par défaut
    Citation Envoyé par JulienDuSud Voir le message
    Ou en d'autres mots une possibilité pour les applications mono-thread d'utiliser plusieurs coeurs à la fois ?
    comme le dit Mathieu c'est pas possible.

  14. #34
    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 381
    Points
    20 381
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Et il y en a. En fonction du nombre de coeurs disponibles, des autres programmes qui tournent... le code sera parallélisé ou pas. Et s'il est parralélisé, ce sera d'une manière qui ne crée pas de thread système, ces derniers étant lourds à créer.
    Absolument c'est indiqué dans la FAQ de TBB
    Intel TBB facilitates scalable performance in a way that works across a variety of machines for today, and readies programs for tomorrow. It detects the number of cores on the hardware platform and makes the necessary adjustments as more cores are added to allow software to adapt. Thus, more effectively taking advantage of multi-core hardware.

Discussions similaires

  1. Renderer n'est jamais appelé + question
    Par Nafnlaus dans le forum Composants
    Réponses: 14
    Dernier message: 20/08/2013, 16h59
  2. Réponses: 0
    Dernier message: 19/05/2010, 12h03

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