Temps d'exécution trop long

diable007 Messages postés 21 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 12 mai 2008 - 11 mai 2008 à 22:03
diable007 Messages postés 21 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 12 mai 2008 - 12 mai 2008 à 01:42
bonjour,
j'ai une application parallèle en c++ et MPI,
 
j'ai une partie qui ne nécessite pas de communication avec mpi entre les processeurs.
 
En séquentiel cette partie prends un temps X et si je l'exécute avec mpi, sur plusieurs processus, elle prends plus de temps, presque le double.
 
avez une idée de ce problème?
vous aurez remarquer que j'ai écrit, PAS DE COMMUNICATION,
donc pas de syncronisation,
en plus j'ai utilisé 2 processus et plus


j'ai remarqué que le temps double avec l'augmentation des process
exemple:  
si avec 2 process=2sec
alors avec 3=4sec
avec 4=6sec
avec 5=8sec
j'ai fait un petit bout de code de mon application et je l'ai testé, ce code ne comporte pas d'envoi ni de recv, sans communication
mais je sais pas comment ça se fait
en dirait le processus 1 affecte le 2 et le 2 affecte le 3 etc
je veux dire les process ont  des effet sur leurs capacités




grand merci pour vous

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 mai 2008 à 23:30
Le lancement d'une tache (thread) sur un core (ou processeur) à un coût certain (création de contexte, init d'une stack, sauvegarde (si c'est le cas) des registres cpu et fpu, etc...). Rien n'est gratuit.


Dans la plupart des cas, un traitement linéaire sur 1 cpu se révèle nettement plus efficace. Quand il n'y a pas absolu nécessité de traitement parralèle, il convient de s'en passer.

ciao...
BruNews, MVP VC++
0
diable007 Messages postés 21 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 12 mai 2008
12 mai 2008 à 01:42
mais l'étude théorique à montré que l'algo mérite d'étre distribué
0
Rejoignez-nous