J'ai un réseau où les processus envoie un message aléatoire à ses voisins et reçoivent simultanément des messages de ses voisins. Je suis capable de le faire en utilisant des douilles et des filetages. Un thread reçoit des messages et un autre envoie des messages à un voisin choisi au hasard. Est-il possible d'y parvenir en utilisant MPI_SEND et MPI_RECV?envoyer et recevoir simultanément en utilisant MPI
Répondre
Vous pouvez utiliser des appels MPI dans un environnement multithread. Consultez le manuel de la fonction MPI_Init_thread et ce document: http://www.mcs.anl.gov/~thakur/papers/mpi-threads.pdf. Gardez à l'esprit que la norme MPI-1 ne nécessite pas une implémentation thread-safe, seulement MPI-2 (mais l'implémentation que vous utilisez est probablement MPI-2).
Merci. La multi-threading est-elle la seule option ou est-il théoriquement possible d'y parvenir en utilisant l'envoi et la réception non-bloquants? – arunmoezhi
Il est difficile de dire sans connaître en détail ce que fait votre code, c'est-à-dire qu'il est peut-être possible de réorganiser votre algorithme et d'utiliser des appels non bloquants. D'un autre côté, j'avais un problème très similaire dans le passé - je travaillais sur le tri parallèle et il était nécessaire d'envoyer et de recevoir des messages en même temps; la seule solution que j'ai trouvé était d'utiliser deux threads et sockets (c'était à l'époque où MPI-2 n'existait pas encore et toutes les implémentations MPI-1 à ma disposition n'étaient pas thread-safe). – miy
Quelle est votre définition de «simultaneous»?
Dans tous les cas, vous pourriez être intéressé par MPI_Sendrecv:
La sémantique d'une opération d'émission-réception est ce que l'on obtiendrait si l'appelant fourchue deux threads simultanés, l'un pour exécuter l'envoi, et un pour exécuter le receive, suivi d'une jointure de ces deux threads.
Merci. Dis que j'ai 3 rangs et que chaque rang doit envoyer 2 messages à d'autres rangs. Par exemple, Rank1 envoie 2 messages à Rank0 et 2 messages à Rank1. Au total, chaque rang envoie 4 messages. Mais l'intervalle de temps entre chaque envoi est aléatoire. Et je ne veux pas mettre un bloc de synchronisation entre chaque sendrecv. – arunmoezhi
- 1. MPI envoyer et recevoir (plusieurs à plusieurs)
- 2. Comment envoyer/recevoir en MPI en utilisant tous les processeurs
- 3. Envoyer et recevoir en utilisant Datagramsocket simultanément dans Android - Juste envoyer?
- 4. MPI - envoyer et recevoir des lignes de la matrice
- 5. MPI continue envoyer et recevoir des messages dans une boucle
- 6. Envoyer et recevoir JSON en utilisant RestClient et Sinatra
- 7. MPI appel et recevoir dans une boucle imbriquée
- 8. MPI envoyer recv confusion
- 9. Sockets - envoyer et recevoir
- 10. envoyer et recevoir des SMS en utilisant PIC18f4550 + GSM sim300
- 11. Envoyer et recevoir une variable à android en utilisant PHP
- 12. Comment envoyer et recevoir du XML correctement en utilisant curl?
- 13. Envoyer et recevoir des chaînes en utilisant HTTP Post
- 14. Comment envoyer et recevoir des données en utilisant gksession?
- 15. Envoyer et recevoir en utilisant $ .ajax jquery mobile
- 16. Comment envoyer et recevoir USSD en utilisant kannel
- 17. winsock2 envoyer et recevoir
- 18. Winsocks Envoyer et recevoir
- 19. Recevoir et envoyer des données en C#
- 20. Passer simultanément des messages entre tous les nœuds dans MPI
- 21. Comment faire deux processus avec deux threads recevoir, envoyer les uns aux autres en MPI?
- 22. Java Multicast envoyer et recevoir
- 23. Envoyer et recevoir des fax
- 24. Envoyer et recevoir des SMS
- 25. Envoyer et recevoir des données
- 26. Application Android utilisant Socket pour envoyer et recevoir des messages:
- 27. En utilisant AVAudioPlayer et MPMoviePlayerController simultanément
- 28. Comment envoyer/recevoir des SMS en utilisant les commandes AT?
- 29. Envoyer/recevoir des emails en utilisant Pidgin (GAIM)?
- 30. envoyer/recevoir des données en utilisant google proto buffer
Vous voulez dire la version non bloquante de l'envoi et de la réception? – arunmoezhi
Peu importe. En fait, je ne comprends pas bien votre question pour y répondre. – nhahtdh
J'ai essayé d'utiliser cela mais j'ai besoin de mettre l'envoi dans une boucle qui envoie des messages à des intervalles de temps aléatoires. Pendant cette exécution de boucle le rang devrait recevoir n'importe quel message envoyé à lui – arunmoezhi