MPI -- utilité des opérations non bloquantes
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

MPI -- utilité des opérations non bloquantes



  1. #1
    invite54194f1c

    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
    invitea3fc981a

    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.

  3. #3
    invite54194f1c

    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
    invite54194f1c

    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
    invite54194f1c

    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 invite3ea95b62 dans le forum Physique
    Réponses: 2
    Dernier message: 05/05/2007, 22h48
  2. Utilité des moustiques
    Par invite216cbd05 dans le forum Biologie
    Réponses: 8
    Dernier message: 23/07/2006, 19h09
  3. Money 2004 livre des opérations
    Par invitec5959781 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 19/06/2006, 09h00
  4. utilité des sinus ???
    Par invitea95aa4e6 dans le forum Santé et médecine générale
    Réponses: 1
    Dernier message: 30/05/2005, 13h38
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...