Existe-t-il un appel de bibliothèque permettant l'envoi/la réception de messages de taille variable à l'aide de MPI? Un travail autour serait d'envoyer la taille des données dans le premier message et le suivre avec la charge utile réelle, mais je me demandais s'il y avait une convention pour combiner ces deux messages distincts.Message de taille variable en MPI
Répondre
Le nombre fourni à MPI_Recv est uniquement une limite supérieure. MPI_Get_count peut être utilisé pour trouver le nombre exact d'éléments reçus.
Sorte de douilles similaires je suppose.
La seule mise en garde est que le nombre et la taille du tampon transmis à MPI_Recv doivent correspondre à la taille. Si une limite raisonnable sur la taille du message peut être faite à l'avance, cela peut être une technique efficace. Sinon, pour s'adapter au cas général, il y aura un certain nombre de tampons capables de contenir un nombre de 32 bits de types de données. Cela peut sérieusement gonfler l'empreinte mémoire. –
Pouvez-vous ajouter un exemple? Souhaitez-vous utiliser 'MPI_Get_count()', puis quelque chose comme 'malloc (sizeof (char) * getCountResult)', puis passer le tampon résultant à 'MPI_Recv()'? – binki
Vous pouvez également utiliser MPI_Probe
ou MPI_Iprobe
au lieu d'afficher une réception avec MPI_Recv
ou MPI_Irecv
. Probe/Iprobe peut présenter des désavantages en termes de performances s'il est utilisé de manière incorrecte, mais il s'agit d'une approche courante pour traiter les messages de taille variable. De même, soyez prudent dans un environnement multithread car Probe/Iprobe n'est pas sûr dans certains contextes multithread. Voir Hoefler et al. pour une discussion approfondie de ces problèmes et un croquis du correctif (Mprobe) susceptible d'être inclus dans MPI-3.
- 1. Message passant interface (MPI) sur Windows
- 2. Passer des structures de longueur variable entre des processus MPI
- 3. Permutations de taille variable
- 4. Tableaux de taille variable en C
- 5. Synchronisation de réseau MPI
- 6. Fonction Mpi définir
- 7. MPI Barrier C++
- 8. Taille de la variable d'instance de hachage
- 9. Initialisation de variable C++ dans une classe pour l'envoyer en utilisant mpi
- 10. Processus MPI multithread Terminer
- 11. WCF taille du message max
- 12. taille maximale du message électronique
- 13. oData RIA PowerPivot Taille de message volumineuse
- 14. Utilisation de php et MPI
- 15. Performance bechmarking du programme MPI en C
- 16. Réception non bloquante en mpi + ocaml?
- 17. MPI, Sungrid vs JPPF?
- 18. Utilisation de Mpi dans Windows
- 19. Programmation d'un message POP3 ID unique et taille du message
- 20. Quelle est la taille de la variable, en python?
- 21. type à taille variable déclarée en dehors de toute fonction
- 22. taille variable type de données (int) en C++
- 23. Taille de bit de la variable GMP
- 24. MPI Fortran Code Problème
- 25. Stockage de table Azure: taille variable maximale?
- 26. structures de taille variable avec des remorques
- 27. Remplir une taille variable Tableau
- 28. taille du message WCF provoquant l'autorisation numéro
- 29. Quelle bibliothèque python mpi utiliser?
- 30. gui pour le programme mpi
Dans le cas général, deux messages avec taille et charge utile sont la méthode préférée pour passer un message dont la taille n'est pas connue avant l'exécution. –
C'est la solution de contournement, mais ce n'est pas simple car les deux messages peuvent interférer avec une autre paire dans un thread différent. Douglas Gregor et d'autres discutent des approches thread-safe dans ce document https://www.researchgate.net/publication/228737912_Dynamically-Sized_Messages_in_MPI-3 et plaident pour une façon standard de le faire. – alfC