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 : 51
    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 : 51
    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