Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

MPI -- utilité des opérations non bloquantes



  1. #1
    Sevto

    MPI -- utilité des opérations non bloquantes


    ------

    bonjour,

    je débute dans la programmation parallèle à l'aide de MPI et j'ai du mal à saisir pourquoi utiliser des fonctions non-bloquantes ... ou plutôt dans quels cas est-ce vraiment utile ? Car je pense qu'il est possible de se débrouiller avec des fonctions bloquantes seulement sans créer forcément un deadlock .

    je n'ai pas trouvé des informations sur la question qui me turlupine, mais ce n'est pas sûr que j'ai effectué la bonne recherche sur le forum... alors, si quelqu'un aurait une idée - ça m'aiderait beaucoup

    -----

  2. #2
    Konrad

    Re : MPI -- utilité des opérations non bloquantes

    Salut,

    Le problème lorsque tu fais du parallèle, c'est que tous les processeurs n'auront pas forcément la même puissance, ils ne calculeront pas tous à la même vitesse, et ils ne se verront pas attribuer la même charge de travail non plus (pour l'exemple simple de diagonalisation d'une matrice : si la taille de la matrice n'est pas divisible par le nombre de processeurs, certains auront à s'occuper d'un bloc plus gros que d'autres).

    Les fonctions non-blocantes de communication par exemple, évitent qu'un processus ait à attendre que le récepteur soit prêt à recevoir l'information.

    Exemple : le processus 1 a fini son calcul, et doit envoyer des informations au processus 2 avant de poursuivre ; s'il fait un MPI_SEND (fonction blocante), alors il devra attendre que le processus 2 soit prêt à recevoir les données (MPI_RECV) avant de pouvoir continuer ses calculs. Et si le processus 2 tourne sur un petit processeur, ou s'il a une plus grosse charge de travail, ben le processus 1 pourra attendre longtemps... Sans parler des échanges de données, où les deux processus s'envoient des données et attendent tous les deux le message de l'autre, restant ainsi bloqués indéfiniment.

    Avec un MPI_SENDRECV (send+receive), ou MPI_Isend ou MPI_Isend (qui sont toutes des fonctions non blocantes), le processus 1 met les données en cache et continue ses calculs ; il se fiche que le processus 2 récupère les données tout de suite ou 10h après.
    "Un clavier AZERTY en vaut deux."

  3. #3
    Sevto

    Re : MPI -- utilité des opérations non bloquantes

    merci pour ta réponse.
    en fait j'avais compris qu'en utilisant par exemple un Isend on permet à P1 de faire autre chose en attendant que P2 ait reçu le message; et certainement il y a beaucoup de situations où c'est utile. mais si on considère le cas où, pour que P1 puisse poursuivre, il doit avoir le resultat du Send-IRecv de P2 ... est-ce qu'une telle situation est courante? ou alors est-ce qu'elle est évitable (désolé pour ce genre de quesions, mais à ce stade j'ai aucune expérience avec MPI)

    et une autre:
    Citation Envoyé par Konrad Voir le message
    Sans parler des échanges de données, où les deux processus s'envoient des données et attendent tous les deux le message de l'autre, restant ainsi bloqués indéfiniment.
    dans ce cas, est-ce que ce n'est pas simplement parce que des fonctions send-recv ont été appelées de façon à provoquer le deadlock (par exemple dans un bloc if-else en appelant toujours recv avant send ..; ce qui pourrait (?) être evité en appelant d'bord send et ensuite recv dans le else-statement) ? (c'est claire ce que je dis? )

  4. #4
    Sevto

    Re : MPI -- utilité des opérations non bloquantes

    merci pour ta réponse.
    en fait j'avais compris qu'en utilisant par exemple un Isend on permet à P1 de faire autre chose en attendant que P2 ait reçu le message; et certainement il y a beaucoup de situations où c'est utile. mais si on considère le cas où, pour que P1 puisse poursuivre, il doit avoir le resultat du Send-IRecv de P2 ... est-ce qu'une telle situation est courante? ou alors est-ce qu'elle est évitable (désolé pour ce genre de quesions, mais à ce stade j'ai aucune expérience avec MPI)

    et une autre:
    Citation Envoyé par Konrad Voir le message
    Sans parler des échanges de données, où les deux processus s'envoient des données et attendent tous les deux le message de l'autre, restant ainsi bloqués indéfiniment.
    dans ce cas, est-ce que ce n'est pas simplement parce que des fonctions send-recv ont été appelées de façon à provoquer le deadlock (par exemple dans un bloc if-else en appelant toujours recv avant send ..; ce qui pourrait (?) être evité en appelant d'bord send et ensuite recv dans le else-statement) ? (c'est clair ce que je dis? )

  5. A voir en vidéo sur Futura
  6. #5
    Sevto

    Re : MPI -- utilité des opérations non bloquantes

    je sais pas trop ce que j'ai pu faire pour qu'il apparaisse deux fois ce message ...
    c'est inutile de gaspiller autant d'espace ... si seulement quelqu'un pouvait y remedier

Discussions similaires

  1. Utilité des AO
    Par parapluie dans le forum Physique
    Réponses: 2
    Dernier message: 05/05/2007, 22h48
  2. Utilité des moustiques
    Par vampyer972 dans le forum Biologie
    Réponses: 8
    Dernier message: 23/07/2006, 19h09
  3. Money 2004 livre des opérations
    Par Turenne dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 19/06/2006, 09h00
  4. Nouvelle technologie pour des opérations chirurgicales laser plus sûres
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 0
    Dernier message: 08/02/2006, 08h39
  5. utilité des sinus ???
    Par Titie3325 dans le forum Santé et médecine générale
    Réponses: 1
    Dernier message: 30/05/2005, 13h38
Découvrez nos comparatifs produits sur l'informatique et les technologies.