MPI_Isend request-parameter
Bei der Verwendung MPI_Isend
, können die MPI_Request
parameter ein null-Zeiger (wenn der sender kümmert sich nicht um die Nachricht nach dem senden)?
- Versuchen Sie es? Sollte mal ein segfault, wenn Sie es nicht können.
- Ok, ich habe versucht, und die Antwort ist Nein: MPI prüft, ob der Antrag Zeiger nicht null ist und ansonsten druckt eine Fehlermeldung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort ist Nein - der Antrag handle-parameter nicht
NULL
.MPI_Isend()
startet einen asynchronen Vorgang senden. Alle asynchronen Operationen gegeben werden, einen Antrag handle, der muss gehandelt werden, auf die Sie später in eine der folgenden Arten:MPI_Wait()
und FreundeMPI_Test()
und Freunde, bis der test stellt sich heraus, positiveMPI_Request_free()
Beide warten und testen von Funktionen frei, die Anfrage, sobald es abgeschlossen wurde. Sie können auch sofort nach der Rückkehr von
MPI_Isend()
. Dies wird nicht den Vorgang Abbrechen, sondern markieren Sie die Anforderung für die Löschung, sobald es fertig ist. Sie werden nicht in der Lage, um den status des send-operation wenn.Wenn Sie kümmern sich nicht um das Ergebnis der asynchronen operation (z.B. Abschluss-status, Nachrichten empfangen, status -, Fehler-code, etc.), das richtige zu tun, ist wie folgt:
VORBEHALT: dies funktioniert für asynchron sendet, da kann man entwickeln, eine andere Methode, um zu überprüfen, dass der Sendevorgang abgeschlossen ist, z.B. die Ziel-Prozess reagieren könnte nach Erhalt der Nachricht. Aber man sollte nie frei eine asynchrone Anfrage erhalten und warten soll, oder test zum Abschluss statt, da es keine Möglichkeit zu wissen, Wann der Vorgang abgeschlossen wurde.
MPI_Request
in gewisser Weise. Es ist möglich für einen MPI-Implementierung zu verzögern, der eigentliche Versand der Nachricht, bis dieMPI_Wait
(oder gleichwertig) - Aufruf. Wenn eine Anforderung gestartet wird und nie abgeschlossen ist, ist es möglich, dass die Nachricht wird nie gesendet werden.