matafan a écrit :
Dans le cas général tu ne peux pas vraiment paralléliser le calcul des différents Un puisque ta suite est définie de manière réursive. Chaque étape a besoin du résultat de l'étape précédente.
Par contre, puisque le terme de rang n dépend des 3 rangs précédent, il n'est pas impossible, suivant comment F est définie, que tu puisse paralléliser le calcul du rand n et une partie du calcul du rand n+1. En effet :
Un = F(Un-1, Un-2, Un-3)
Un+1 = F(Un, Un-1, Un-2)
Si ta fonction F peux être décomposée en deux fonctions G et H, de cette manière :
Un = H(Un-1, G(Un-2, Un-3))
Un+1 = H(Un, G(Un-1, Un-2))
Alors tu vois que tu peux calculer Un et G(Un-1, Un-2) en parallèle.
Evidemment dans le cas d'un calcul parallèle, la synchronisation de tes threads a un coup... Ce n'est donc intéressant que si la fonction H est beaucoup plus rapide de que la fonction G. Bref, ce n'est utilisable que ta fonction F fait des trucs très compliqués avec les rangs n-2 et n-3, puis fait un truc tout simple avec le rang n-1.
|