MPI_Recv - Wie ermittelt man die Anzahl?

8

Sagen wir also, ich habe ein MPI-Programm mit zwei Prozessen, Rang 0 und Rang 1.

%Vor%

Im Prozess mit Rang 0 habe ich

%Vor%

und sagen wir, Prozess mit Rang 1 macht dann

%Vor%

Meine Frage ist, in der obigen Aussage, muss "Größe" erklärt werden? Oder "weiß" MPI_Recv irgendwie, dass es 15 Elemente empfängt und automatisch Größe = 15 einstellt? Wenn die Größe nicht definiert ist, was passiert mit dem Code?

Im Grunde ist meine Frage, ich sende eine andere Anzahl von Elementen an Prozessoren mit verschiedenen Rängen, alle Nachrichten stammen aus Rang 0. Ich möchte wissen, ob ich zuerst die Größe über den Server senden und dann die Prozessoren vorbereiten sollte so viele Elemente, oder wenn ich nur das Array und die Prozesse senden kann, wählen Sie automatisch die Größe von dort.

    
Hari Sundararajan 01.03.2011, 18:42
quelle

1 Antwort

14

Sehen Sie sich die Dokumentation für MPI_Recv an:

  

Eingabeparameter

     

Anzahl maximale Anzahl von Elementen im Empfangspuffer (ganze Zahl)

Also ja, Sie müssen einen Wert übergeben. Beachten Sie, dass es nicht die tatsächliche Anzahl der Elemente sein muss, die Sie empfangen, sondern nur die maximale Anzahl der Elemente, die Ihr Puffer enthalten kann. In Ihrem Fall müssen Sie nur 20 übergeben. Im Abschnitt Notizen wird außerdem angegeben, wie die tatsächliche Anzahl der empfangenen Elemente ermittelt wird:

  

Das Argument count gibt die maximale Länge einer Nachricht an; Die tatsächliche Anzahl kann mit MPI_Get_count ermittelt werden.

    
casablanca 01.03.2011, 18:48
quelle

Tags und Links