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 :

[C++] Parallélisation Multicore : Boost - TBB ?


Sujet :

Threads & Processus C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Par défaut [C++] Parallélisation Multicore : Boost - TBB ?
    Bonjour

    J'ai besoin d'un conseil. Je dois paralleliser un programme écrit en C++ en utilisant au max les possibiltés hardware de la machine sur laquelle il devra tourner. J'ai à ma disposition les librairies Boost, mais j'ai beau trifouiller, à part une petite méthode qui me renvoie le nombre de CPU's, j'ai pas l'impression que je pourrai m'en tirer avec. Vous avez déjà testé Boost dans le cadre d'une parallélisation multicore ?

    Sinon, je pensais aussi à TBB qui n'a pas l'air trop mal ? Vous avez déjà eu l'occasion de l'utiliser ? Quel est votre avis ?

    Voila, si vous pouviez me conseiller ce serait super sympa.
    Le mieux pour moi, serait d'utiliser Boost car celle librairie est déjà utilisée ailleurs dans le programme mais, j'ai beau lire et relire la librairie Thread, je ne vois pas comment je pourrais exploiter les différents cores de ma machine.

    Merci d'avance pour vos conseils éclairés !

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    A priori, Boost semble ne pas savoir gérer l'affinité processeur, ce qui te renvoie donc directement dans l'API de ton OS pour gérer cela. Je ne connais d'ailleurs pas de librairie d'abstraction système qui gère ça (ni POCO, ni ACE, ni ICE ne supportent cette fonctionnalité). Dans un tel cas, c'est l'OS qui décide "seul" de la répartition automatique des threads sur les cœurs. C'est parfois très bien et suffisant, parfois non.

    Je n'ai jamais utilisé TBB (librairie MT Intel pour ceux qui lisent en curieux), mais en règle générale, leurs produits logiciels sont très performants, même si leur prise en main n'est pas toujours forcément triviale non plus. Il serait par contre extrêmement étonnant qu'elle ne supporte pas l'affinité.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    screetch
    Invité(e)
    Par défaut
    sans aller jusqu'a l'affinité, boost n'est pas vraiment adapté au multi-core juste au multi-thread. une bibliotheque comme TBB est plus orientée calcul parallèle.

    donc si tu souhaites séparer simplement une partie du calcul pour la faire tourner en parallèle, boost te permettra de créer des threads. Si ton objectif est de faire du calcul parallèle (diviser un gros calcul en plus petit calculs), TBB est bien plus performant pour cela. Et TBB abstrait le materiel.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Par défaut
    Merci pour vos réponses.

    En effet, j'ai besoin de diviser un gros calcul pour répartir son traitement sur tous les cores (sur une même machine) que j'ai à ma disposition.

    Un ami m'a aussi parlé de OpenMP, mais plus je me renseigne, plus j'ai l'impression que ça ne convient pas tellement au type de problème auquel je suis confrontée.
    J'hésite donc à choisir TBB; j'ai peur de m'attaquer à quelque-chose d'un peu trop costaud pour moi

    Je suis vraiment novice dans ce domaine, c'est pour cela que des avis sont les bienvenus

    Merci !

  5. #5
    screetch
    Invité(e)
    Par défaut
    pour TBB tu as besoin d'un peu de connaissance sur l'utilisation des templates
    http://www.threadingbuildingblocks.o...umentation.php contient le "kit de départ"

    en gros au lieu de faire une boucle for ils expliquent comment faire un parallel_for.
    apres si ton application n'a pas été prévue pour etre effectuée sous forme de taches ou supporte mal ce paradigme c'est mal barré

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par nanath02 Voir le message
    En effet, j'ai besoin de diviser un gros calcul pour répartir son traitement sur tous les cores (sur une même machine) que j'ai à ma disposition.
    Ce ne serait pas mal que tu nous détailles, en gros, l'algo appliqué (complexité par exemple), la taille des données impliquées dans le calcul (entrées + sorties), et si tu vois clairement des parties indépendantes dans le calcul/algo ou pas.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Par défaut
    En gros, le problème consiste dans un premier temps à parcourir lignes/colonnes une matrice 1000x1000 (le but étant à l'avenir de manipuler des matrices de dimension beaucoup plus importante) par deux simples boucles for imbriquées.
    Il s'en suit qu'une nouvelle matrice est remplie progressivement à chaque loop, grâce à des éléments provenant de la matrice parcourue initialement.
    Or chacun de ces éléments (parfois 1000x1), aura du préalablement subir un traitement, avant d'être inséré dans cette dernière matrice.

    Donc je me dis que, si tous ces traîtements pouvaient être parallélisés, ce serait super. Et je ne pense pas me planter quand je pense à TBB pour paralléliser ce genre de truc, non ?

  8. #8
    screetch
    Invité(e)
    Par défaut
    non c'est le genre de probleme que TBB traite bien.

  9. #9
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    Je dit peut-être une connerie mais... pourquoi pas OpenCl ?

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    OpenCL c'est surtout pour le GPU.

    J'ai commencé a le tester un peu. Ca parait être ce qu'il y a a de mieux et de plus standard pur la programmation GPGPU.

    Certes c'est censé être un interface commun pour le CPU et le GPU, mais je lui fait pas du tout confiance pour le CPU.
    Pas la peine de perdre son tant avec cet interface et un pseudo langage C pour programmer sur CPU.

    En plus le SDK NVidia ne marche pas encore sur le CPU... le SDK d'ATI si, par contre il ne marche (pour l'instant?) qu'avec leurs propres cartes graphiques.
    Bref, c'est pas encore mûr.

  11. #11
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    Ben vu sa demande de parallélisation, je pensais que l'utilisation du gpu étais une bonne idée...

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    A lui de voir. Mais ça n'a plus rien à voir avec TBB,Boost,OpenMP,etc...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 97
    Par défaut
    Bonjour

    Merci pour vos conseils. Le GPU c'est pour après
    Je me demandais si l'un d'entre-vous avait déjà réussi à installer TBB avec le compilateur minGW ?
    Je ne parviens pas à savoir comment m'y prendre malgré la doc que j'ai lue...

Discussions similaires

  1. installation de boost
    Par heinquoi dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 18/04/2005, 17h20
  2. Fichiers, dossier, chemin et lib boost ?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 24/11/2004, 18h21
  3. Installation de boost (librairie)
    Par dj.motte dans le forum Autres éditeurs
    Réponses: 14
    Dernier message: 21/11/2004, 03h11
  4. boost::serialize
    Par Fry dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 05/11/2004, 18h03
  5. cherchecomment utiliser boost sous linux
    Par Krost dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 25/02/2004, 22h03

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