Es un poco extraño que mencione esto en el contexto del orden de los mensajes. Citandote:
Según tengo entendido, el orden en que se reciben los mensajes MPI punto a punto sin bloqueo (Isend e Irecv) es coherente con el orden en que se envían.
Vale la pena señalar aquí que MPI solo garantiza que los mensajes coincidentes entre procesos se recibirán en el orden en que fueron enviados. Realmente no desea que cambie este tipo de orden, porque hace que su código sea más comprensible y le quita una gran carga como programador de aplicaciones.
Sin embargo, si envió mensajes con diferentes etiquetas, eso cambia los criterios de coincidencia, y podría recibir fácilmente el segundo antes que el primero. Vea el segundo ejemplo en la parte relevante de la norma para más detalles. Yo espero que si usted tiene dos piezas de código que envían al mismo tiempo que ya está separando los mensajes grueso y fino usando las etiquetas, y no tratar de poner en práctica algún protocolo de su propio mensaje en la parte superior del ordenamiento. Esta es una segunda naturaleza para la mayoría de los programadores de MPI que conozco.
De todos modos, suponiendo que lo esté haciendo, probablemente le preocupe que los mensajes de gran volumen y granularidad obstruyan su red cuando desee enviar los gruesos. Mi consejo general al respecto es que si no se trata de un problema de rendimiento que realmente se puede medir en este momento, entonces realmente no debería molestarse en abordarlo. Parece confirmar que todavía no es un problema en uno de los comentarios anteriores.
Una posible solución que podría considerar sería utilizar un colectivo sin bloqueo (NBC) como Bcast o Barrier para notificar a todos que la fase gruesa está lista y lista para enviar su solución. Con toda probabilidad, el tráfico de NBC no se priorizará, pero los procesos notificados pueden al menos dejar de enviar gotas de soluciones finas hasta que se realicen los envíos generales. Los NBC estarán en MPI-3 o podría intentar usar libNBC si no puede esperar tanto.
Una vez más, sin embargo, esto parece mucho trabajo para algo que todavía no parece ser un problema de rendimiento.