78 votes

MPI : bloquant vs non bloquant

J'ai du mal à comprendre le concept de communication bloquante et de communication non bloquante dans MPI. Quelles sont les différences entre les deux ? Quels sont les avantages et les inconvénients?

10voto

peaceman Points 1339

En utilisant le blocage de la communication, vous devez faire attention à envoyer et recevoir des appels par exemple regarde ce code

  if(rank==0)
 {
     MPI_Send(x to process 1)
     MPI_Recv(y from process 1)
 }
 if(rank==1)
 {
     MPI_Send(y to process 0);
     MPI_Recv(x from process 0);
 }

Que se passe-t-il dans ce cas?

  1. Le processus 0 envoie x au processus 1 et bloque jusqu'à ce que le processus 1 reçoive x.
  2. Le processus 1 envoie y au processus 0 et bloque jusqu'à ce que le processus 0 reçoive y, mais
  3. le processus 0 est bloqué de telle sorte que le processus 1 bloque à l'infini jusqu'à ce que les deux processus soient tués.

4voto

Shaowu Points 304

C'est facile.

Le non-blocage signifie que le calcul et le transfert de données peuvent se produire en même temps pour un seul processus.

Bien que le blocage signifie, hé mon pote, vous devez vous assurer que vous avez déjà terminé le transfert de données, puis revenir pour terminer la commande suivante, ce qui signifie que s'il y a un transfert suivi d'un calcul, le calcul doit être effectué après le succès du transfert.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X