rsnt_translations
56,420
edits
No edit summary |
No edit summary |
||
Line 712: | Line 712: | ||
</tabs> | </tabs> | ||
Compilez ce programme et faites-le exécuter avec 2, 4 et 8 processus. Le fonctionnement semble approprié, mais il y a cependant un problème caché. En effet, la norme MPI n'offre aucune garantie que <tt>MPI_Send</tt> retournera avant que le message ait été livré. Dans la plupart des implémentations, les données sont mises en mémoire temporaire par <tt>MPI_Send</tt> et retournent sans attendre d'être | Compilez ce programme et faites-le exécuter avec 2, 4 et 8 processus. Le fonctionnement semble approprié, mais il y a cependant un problème caché. En effet, la norme MPI n'offre aucune garantie que <tt>MPI_Send</tt> retournera avant que le message ait été livré. Dans la plupart des implémentations, les données sont mises en mémoire temporaire par <tt>MPI_Send</tt> et retournent sans attendre d'être livrées. Par contre, si la mémoire tampon n'était pas utilisée, notre code bloquerait. Chaque processus appellerait <tt>MPI_Send</tt> et attendrait que le processus voisin appelle <tt>MPI_Recv</tt>. Puisque le processus voisin serait aussi en attente d'une réponse de <tt>MPI_Send</tt>, tous les processus seraient indéfiniment en attente. Les bibliothèques des systèmes de Calcul Canada utilisent les ''buffers'' puisque notre code n'a pas bloqué; ce modèle de conception n'est toutefois pas fiable. Sans mémoire tampon offerte par la bibliothèque, le programme pourrait faire défaut, et malgré la mémoire tampon, un appel pourrait être bloqué si celle-ci est saturée. | ||
[~]$ mpicc -Wall phello2.c -o phello2 | [~]$ mpicc -Wall phello2.c -o phello2 |