Bonjour,
je suis en train d'étudier la bibliothèque TBB et n'en suis qu'au début de mon apprentissage (je lis le livre de James Reinders).
Voilà mon problème : j'ai lu la partie sur parallel_for et ai voulu tester, pour voir si j'avais bien compris ce que j'avais lu et là, je vois qu'en executant une boucle parallélisée sur deux Threads, le programme est plus lent que le même calcul réalisé en série.
Voici le résultat d'éxécution :
Cette fonction calcule le 30ème terme de la suite de fibonachi récursivement (donc je fais fibo(n) = fibo(n-1) + fibo(n-2) ). Je sais que ce n'est pas optimisé mais ce n'est pas le but ici, je teste juste la parallélisation de la boucle.Debut du calcul en serie ...
version serie executee en 26 s
Debut du calcul en parallele ...
Calcul_fibo::nb_appel_copie = 0
Calcul_fibo::nb_appel_copie = 2
version parallele executee en 45.1546 s
----------- Fin de verification des resultats -----------
Gain = 0.575799
J'ai un tableau de 500 entiers et je recalcule pour chaque élément le 30ème terme de la suite. En ce qui concerne le grain, j'ai mis 250, pour que chaque thread éxécute 250 éléments du tableau. La boucle en série calcule elle l'ensemble des éléments du tableau.
Dans le constructeur par copie de Calcul_fibo, j'ai mis un compteur pour savoir combien de fois il est appelé. On peut voir qu'il a été appelé deux fois, un pour chaque thread.
Ha j'oubliais, je fais une vérification des résultats à la fin et les deux tableaux sont identiques. De plus, on voit bien dans la fenêtre de surveillance du système que lors de l'éxécution de la fonction en série, un seul core est utilisé (à 100%), alors que pendant la version parallele, les deux cores sont à 100% d'utilisation.
Je ne sais pas si je suis très clair, je peux mettre le code source si besoin ...
Encore une chose : je suis sous linux 64 bits et ai un Core 2 Duo T9300.
Voilà, si quelqu'un peut m'aider, je m'arrache les cheveux depuis 2 jours pour trouver d'où vient l'erreur/le problème ...
EDIT : En fait le problème était dû à mon installation de TBB, je l'avais installé via le gestionnaire de paquets d'Arch Linux et je ne sais pas trop pourquoi j'avais ces résultats là mais bon ... en téléchargeant sur le site d'Intel et en configurant les variables d'environnement correctement, tout fonctionne à merveille![]()
Partager