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?
Réponses
Trop de publicités?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?
- Le processus 0 envoie x au processus 1 et bloque jusqu'à ce que le processus 1 reçoive x.
- Le processus 1 envoie y au processus 0 et bloque jusqu'à ce que le processus 0 reçoive y, mais
- le processus 0 est bloqué de telle sorte que le processus 1 bloque à l'infini jusqu'à ce que les deux processus soient tués.
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.