Anmutig Ausfahrt mit MPI

Ich versuche ohne Fehler zu beenden mein Programm nach, ob Rdinput einen Fehler zurück.

#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>

#define MASTER 0
#define Abort(x) MPI_Abort(MPI_COMM_WORLD, x)
#define Bcast(send_data, count, type) MPI_Bcast(send_data, count, type, MASTER, GROUP) //root --> MASTER
#define Finalize() MPI_Finalize()

int main(int argc, char **argv){

  //Code

  if( rank == MASTER ) {
    time (&start);
    printf("Initialized at %s\n", ctime (&start) );      
    //Read file
    error = RdInput();
  }

  Bcast(&error, 1, INT); Wait();

  if( error = 1 ) MPI_Abort(1);

  //Code

  Finalize();
}

Programm-Ausgabe:

mpirun -np 2 code.x 
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD 
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
Initialized at Wed May 30 11:34:46 2012
Error [RdInput]: The file "input.mga" is not available!
--------------------------------------------------------------------------
mpirun has exited due to process rank 0 with PID 7369 on
node einstein exiting improperly. There are two reasons this could occur:

//More error message.

Was kann ich tun, um würdevoll beenden Sie ein MPI-Programm ohne den Druck dieses riesige Fehlermeldung?

Wo habt Ihr Sie versteckt mpi_init ?
Alle code, den Sie geteilt haben, ist irrelevant für das problem. Alle der code, der relevant ist für das problem fehlt. Wir wissen nicht, wie Sie Sie initialisieren oder MPI finalize, und wir wissen gar nicht, wo rank definiert ist, oder, wie Sie füllen Sie es. Gerade jetzt, es sieht aus wie MPI ist noch nie initialisiert.
Ein völlig off-topic-Vorschlag: Betrachten fallen die großen banner. Man könnte einen Schalter wie --help und die Liste der Autoren, wenn Sie drucken, Hilfe, Informationen, oder Sie können die Liste der Autoren, die in der man Seite für Ihr Programm. Kann jemand wollen, verwenden Sie die Ausgabe Ihres Programms in ein script, und das banner wird sein ein Schmerz im Nacken, dann. Als ein Beispiel, stellen Sie sich vor, was passieren würde, wenn die cat Programm gestartet, indem Sie ein banner drucken, Wann immer Sie Sie bitten, es zu cat eine Datei.
Das banner ist ziemlich üblich, am Beginn der wissenschaftlichen software, insbesondere, wenn er druckt-version zahlen oder details ausführen, damit diese Informationen werden dann gespeichert in der Ausgabe des Programms.

InformationsquelleAutor Fabricio | 2012-05-30

Schreibe einen Kommentar