Ist es möglich, eine Reihe von Tags für eine MPI_Recv-Funktion anzugeben?Set von MPI-Tags
Mein Szenario:
ich mit einer Anwendung arbeiten, die ich mehrere Threads hat, die gleichzeitig die MPI_Recv Funktion auszuführen. Ich beabsichtige mit dem MPI-Tag zu steuern, welcher Thread die Nachricht erhalten wird. Aber ich muss auch kontrollieren, ob die Nachricht eine data_message oder eine stop_message ist.
Also, ist es möglich, eine Reihe von Tags für MPI_Recv zu definieren? Semantisch wäre etwas wie "Empfangen von Nachrichten mit Tags 0 oder 1" oder "Empfangen von Nachrichten mit Tags 10 oder 11" usw. Es müssen mehrere Werte sein.
Mit diesem Ansatz wäre möglich, die Tagsthread_id * 2 als data_message und thread_id * 2 + 1 als stop_message zu verwenden.
'MPI_Testany' und' MPI_Waitany' sind Quellen der Nichtdeterminierung. Es funktioniert nur, wenn das OP garantieren kann, dass keine _stop_message_ gesendet wird, bevor der Empfang der vorhergehenden _data_message_ irgendwie garantiert wurde. –
Das ist ein guter Punkt. Mein Vorschlag hängt davon ab, dass nur die eine oder die andere der Nachrichten zur Verfügung steht, die übereinstimmen, da die Semantik der Reihenfolge zwischen verschiedenen angegebenen Tags auf verschiedenen Empfängen nicht hilft. – Novelocrat