Ich habe eine Reihe von MPI-Prozessen, die Anforderungsnachrichten hin und her austauschen. Prozesse wissen nicht, welche anderen Prozesse ihnen Nachrichten senden oder wie viele. In dieser Situation möchte ich auf effiziente Weise feststellen, ob alle anderen Prozesse das Senden von Nachrichten für erledigt halten.
Dies würde perfekt durch die folgende nicht blockierende Version von MPI_Barrier erreicht, die wir MPI_Ibarrier nennen werden:
int MPI_Ibarrier(MPI_Comm comm, MPI_Request* request);
MPI_Ibarrier
würde sofort zurückkehren, und Standardoperationen für das Anforderungsobjekt würden uns wissen lassen, wenn die Barriere von allen erreicht wurde.
Gibt es eine Möglichkeit, dieses Verhalten in MPI 2 effizient zu simulieren (dh ohne offizielle nicht blockierende Kollektive)?