2017-03-22 2 views
1

Ich lerne in MPI in C zu programmieren und ich habe nicht gefunden, was passiert mit dem dynamisch zugewiesenen Speicher (malloc/calloc) in allen Prozessen von einem MPI-Kommunikator/Gruppe wenn einer der verarbeitet Aufrufe MPI_Abort.MPI_Abort und dynamisch zugeordneter Speicher

Das Freigeben des dynamisch zugewiesenen Speichers kann zu Fehlfunktionen/unvorhersehbarem Verhalten führen? Wird dies als ein Leck betrachtet?

Antwort

4

MPI_Abort() ist analog zu exit():

Diese Routine ein "bester Versuch" macht alle Aufgaben in der Gruppe von comm abzubrechen. Diese Funktion erfordert nicht, dass die aufrufende Umgebung irgendeine Aktion mit dem Fehlercode unternimmt. Eine Unix- oder POSIX-Umgebung sollte dies jedoch als Rückgabe-Fehlercode aus dem Hauptprogramm behandeln.

(MPI 3.1 specification)

Wo es bei Abbruch Prozessen wirksam ist, jede dynamisch zugewiesenen Speicher von diesen Prozessen gehalten werden zurück in die OS freigegeben. Dynamische Zuordnungen überleben den Prozessabschluss nicht. So,

Das Freigeben des dynamisch zugewiesenen Speichers kann zu Fehlfunktionen/unvorhersehbarem Verhalten führen?

In gewissem Umfang.

Wird dies als Leck betrachtet?

Es gibt kein Leck von malloc() ed oder calloc() ed Speichern aus dem Betrieb von MPI_Abort() entstehen. Memory Leaking ist nur im Kontext eines fortlaufenden Prozesses relevant.

+0

Ich entschied mich zu löschen, danke für die Option :) Ihre Antwort adressiert die Probleme genauer. – ryyker

Verwandte Themen