Bonjour a tous,
Une question un peu générale sur le sujet du multithread.
Actuellement une application lance de nombreux calculs (indépendants ou non les uns des autres) de manière séquentielle.
Le but, les lancer en parallèle pour optimiser les temps de calculs.
L'environnement: Windows/Linux (Visual2010 - GCC4? [j'aurai demain l'indice])
2 approches: multithread ou multiproc.
- Multithread
La solution vers laquelle je me tournais instinctivement.
Venant du monde de l'embarqué, je travaillais sur une bibliothèque perso basée su pthread pour gérer des classes qui héritait de ma classe thread (et redefinir mon run etc)
Maintenant je vois qu'il y ici et la d'autres lib (boost, opentop etc..) voir même (mieux?) std::thread de C++11 (si géré par le systeme)
- Multiproc
Une appli manager qui s'occupe de lancer N process de calculs.
Chaque calcul reçoit en entrée un jeu de paramètre en lecture, et fournit en sortie un jeu de paramètre qui peut lui même être l’entrée de N autres calculs.
Ma question est un peu basique, bien que j'ai lu de nombreux posts ici et la sur le sujet mais C++11 peut peut être changer la donne:
Quels aspects doivent être parfaitement étudiés pour pouvoir faire le choix entre multithread/multicœur pour pouvoir lancer ces jeux de calculs dans les 2 systèmes et avoir un gain de perfs.
Est ce qu'en faisant un process qui lance N process le système s'occupe de les placer sur différents cœurs (comme les threads ?) ?
J'ai pu voir certaines discussions sur la remise en cause des perfos du multithreading, est ce qu'en multithreadant une appli séquentielle qui lance ces N calculs à la suite on est certains d'avoir un gain de temps d’exécution ?
Et pour finir, la place du C++11 dans ces 2 environnements.
Merci a vous pour votre retour sur le sujet si vous êtes déjà passé par la.
Bonne fin de journée
Partager