diable007
Messages postés21Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention12 mai 2008
-
11 mai 2008 à 22:03
diable007
Messages postés21Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention12 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
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.