Envoyé par
Nilsou
J'ai en effet besoin de tout les pixels à l'étape suivantes.
Donc, ouais il vont attendre, mais ce sera déjà plus rapide qu'avec un seul cpu
.
Donc de toute manière les données seront passé par paquet a la fin de chaque cycle.
Un schéma plutôt simple en fait.
Oui mais tu n'es pas oblige de tous les consommer des le debut de la phase suivante, c'est ce que j'essayais de dire. Avec une parallelisation "simple" comme ca, si ton probleme n'est pas suffisament gros (pas assez de pixels) la parallelisationrisque d'etre nettement plus lente que l'appli non threadee.
Cis dessous, par exemple (P1 calcul sur le groupe de pixel P1, "|" = synchro) tu as tous les pixels consommes dans la production de tous les pixels par phase.
Code:
-------------------------------------->temps
CPU1 P1->P2->P3->P4=>P1 |___ P1->P2->P3->P4=>P1
CPU2 P1->P2->P3->P4=>P2 _|__ P1->P2->P3->P4=>P2
CPU3 P1->P2->P3->P4=>P3 __|_ P1->P2->P3->P4=>P3
CPU4 P1->P2->P3->P4=>P4 ___| P1->P2->P3->P4=>P4
mais ca sera probablement mieux parallelise en n'utilisant pas une barriere de synchronisation, mais une forme de pipeline qui permettra de reduire le temps des synchronisations.
Code:
-------------------------------------->temps
CPU1 P1->P2->P3->P4=>P1 | P1->P2->P3->P4=>P1
CPU2 ___ P1->P2->P3->P4=>P2 | P1->P2->P3->P4=>P2
CPU3 _______ P1->P2->P3->P4=>P3 | P1->P2->P3->P4=>P3
CPU4 ___________ P1->P2->P3->P4=>P4 | P1->P2->P3->P4=>P4
Bien entendu au demarrage et a l'arret tu perdras les temps d'amorcage de pipeline, mais en regime continu c'est beaucoup plus rapide, surtout si tes communications sont couteuses face a tes calculs (si elles ne le sont pas c'est effectivement un probleme simple et pas besoin de trop s'embeter ).
Tu remarqueras que cette 2 eme methode de parallelisation se prete assez bien au passage de message (probablement mieux que la premiere dans le cas de ce probleme).
Tu nous dira quelle amelioration de perf tu recuperes avec ta premiere implementation parallele (ma premiere c'etait ~-10% de perf a chaque fois que j'ajoutais un core, mais le passage de message etait autrement plus lent que sur ton itanium... ).