IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

question simple mais consistante à propos de mpi


Sujet :

C++

Vue hybride

fatjoe question simple mais... 26/04/2008, 23h21
Le Farfadet Spatial Salut à tous ! C'est... 27/04/2008, 11h57
fatjoe en fait, c'est pas un test,... 27/04/2008, 13h48
Le Farfadet Spatial Salut à tous ! Ce... 27/04/2008, 19h41
fatjoe merci vraiment pour votre... 27/04/2008, 20h50
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut question simple mais consistante à propos de mpi
    bonjour tout le monde,
    voila la question
    est ce que la parallélisation avec MPI ,d'une application qui s'exécute en 15 secondes ou 20 secondes est bénéfique ou au contraire elle est pénalisante,
    parceque j'ai utilisé MPI pour la prallélisation de mon application qui dure 15 ou 25 secondes, j'ai pas gagnédu temps d'exécution,
    en fait même l'initialisation de mpi dure 1,4 secondes
    alors qu'est ce que vous penez?
    merci

  2. #2
    Membre éclairé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 190
    Par défaut
    Salut à tous !

    C'est complètement dépendant du code. Après, il faut savoir ce que tu entends par bénéfique. Si c'est pour gagner du temps d'exécution, certains codes, même s'ils ne s'exécutent qu'en 15 ou 20 secondes seront plus performants si la parallélisation est bien faite. D'autre seront plus lents, car peu parallélisables et alors on perd du temps à synchroniser les processus. En tout cas, il faut savoir que ce n'est pas parce qu'on utilise MPI que ça va plus vite : il faut aussi que la parallélisation soit bien faite. Il y a donc un problème d'algorithmique parallèle derrière, ainsi qu'une question de qualité de la programmation (le parallélisme peut être un peu déroutant au début).

    Si la question était : est-ce que ça a un intérêt, ça dépend. Si ton exécution de 15 à 20 secondes est un test, mais que le code doit mettre plus de temps dans le cas réel, oui, ça peut être utile. Si cette exécution de 15 secondes est un cas normal, alors il y a probablement peu d'intérêt à paralléliser ton code (si l'objectif de la parallélisation est de gagner du temps d'exécution).

    À bientôt.

    Le Farfadet Spatial

  3. #3
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    en fait, c'est pas un test, c'est mon programme qui prends 15 ou 25 secondes de temps d'exécution, et mon but c'est de gagner sur le temps d'exécution,
    j'ai en fait 90 send et 90 recv , et à part le temps des envoies et réception, j'ai une petite partie de code dans le même programme (calcul qui ne nécessite pas de communication) ce bout de code prends en séquentiel 0,30 secondes, et en parallèle sur plusieurs processus, ça prend 1,4 secondes.

    j'ai pas vraiment pas gagner du tout.
    autre chose, si j'augmente le nombre de processus ça n'améliore pas mais à l'inverse, ça dégrade.
    pourvez vous me clarifier ce qui se passe.
    merci d'avance

  4. #4
    Membre éclairé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 190
    Par défaut
    Salut à tous !

    Citation Envoyé par fatjoe Voir le message
    autre chose, si j'augmente le nombre de processus ça n'améliore pas mais à l'inverse, ça dégrade.
    pourvez vous me clarifier ce qui se passe.
    Ce n'est pas très surprenant. Pour un tel code, je ne pense pas que c'est dans le parallélisme que tu trouveras de quoi gagner en temps d'exécution.

    Il est un peu difficile de parler dans le vide, sans vraiment savoir ce que tu veux faire. Cela dit, il faut voir qu'il existe un nombre de processus optimal, qui est fonction du nombre de processeurs, de l'algorithme et du système. De plus, les phases de communication et de synchronisation entre processus sont toujours délicates. En fait, trouver la bonne répartition est généralement un problème difficile (NP-complet). Généralement, on aborde ces problèmes à l'aide de la théorie des graphes.

    Voilà pour parler de manière très générale et un peu dans le vide (et aussi de manière un peu fumeuse). Après, il faut voir ton problème particulier, peut-être est-ce plus simple, je ne sais pas. C'est difficile de parler sans savoir ce que tu veux faire. En tout cas, le mieux est en général de faire un processus par processeur --- ou cœur de processeur, ce qui revient au même, --- sinon on a tendance à les surcharger, en tout cas on perd du temps pour la synchronisation. À tempérer légèrement avec le fait que les processeurs sont désormais superscalaires, mais c'est une bonne première approximation.

    Cela dit, puisque j'en suis dans les généralités : le parallélisme, c'est l'avenir. Cependant, cela pose des problèmes complexes (par exemple la répartition optimale de la charge de calcul). De plus, ce n'est pas la panacée. Généralement (même s'il existe des cas particuliers), il ne faut pas espérer de meilleures performances en parallélisant une procédure qui dure moins de trente secondes.

    Si ce que tu recherches ce sont uniquement les performances --- peut-être as-tu un système client-serveur ou que sais-je, auquel cas c'est autre chose --- la première vraie question à se poser est : est-ce que mon cas vaut vraiment la peine de tenter des bricolages longs et compliqués, qui mettent à mal la validité du code, pour gagner quelques cycles ? De toute façon, il faut d'abord et avant tout réfléchir à l'algorithme : le simple fait de passer de O(n²) à O(n log n) est source d'un gain de performances considérable.

    Donc : réfléchit déjà à tes algorithmes.

    À bientôt.

    Le Farfadet Spatial

  5. #5
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    merci vraiment pour votre réponse,
    mais vous m'avez pas répondu à propos du bout de code séquentiel,
    qui prend plus de temps d'exécution si je l'exécute sur plusieurs processus.
    merci

  6. #6
    Membre éclairé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 190
    Par défaut
    Salut à tous !

    Citation Envoyé par fatjoe Voir le message
    mais vous m'avez pas répondu à propos du bout de code séquentiel,
    qui prend plus de temps d'exécution si je l'exécute sur plusieurs processus.
    Encore une fois, je ne peux pas vraiment répondre sans savoir de quoi on parle...

    Cela dit, lorsqu'on lance un processus, même léger, il y a toute une mécanique qui se met en place. Ça n'est pas instantané, notamment pour la mise en place du contexte d'exécution. De plus, pour peu qu'on ait beaucoup plus de processus que de processeurs, ils sont mis en attente le temps que les ressources se libèrent, ce qui prend encore un délai. Bref, ça n'est pas vraiment surprenant, mais je ne sais pas exactement ce qui se passe dans votre cas.

    À bientôt.

    Le Farfadet Spatial

Discussions similaires

  1. Question simple mais piège
    Par wafiwafi dans le forum Langages de programmation
    Réponses: 18
    Dernier message: 21/08/2009, 14h37
  2. Question simple à propos des USE CASE
    Par foufar2009 dans le forum Cas d'utilisation
    Réponses: 3
    Dernier message: 01/06/2009, 15h51
  3. question à propos de MPI
    Par fatjoe dans le forum C++
    Réponses: 1
    Dernier message: 24/06/2008, 16h05
  4. question simple a propos de QDialog
    Par elmcherqui dans le forum Qt
    Réponses: 4
    Dernier message: 24/05/2008, 23h13
  5. Question simple mais vitale : index unique
    Par Commandant dans le forum Sybase
    Réponses: 2
    Dernier message: 20/12/2006, 20h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo