Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Paralleles Programmieren: Exception richtig abfangen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749

    Paralleles Programmieren: Exception richtig abfangen?

    Hallo,

    ich weiß nicht wohin ich posten kann hier. Evtl. muss ich verschoben werden.

    Ich programmiere seit kurzem Parallel auf einem Cluster mit OpenMPI.
    Mir ist dabei etwas einfaches aber grundlegendes nicht ganz klar.

    Wenn ich eine exceptions (C++) über throw auslöse und diese z.B. in die main hochreiche, diese exceptions aber nur auf einem Prozess ausgelöst wurde - wie kann ich dann sicherstellen dass der Error-string nur ein einziges mal auf die shell geworfen wird. mir ist klar dass wenn jeder prozess z.B. gleichen input bekommt dann gleich prüft kann man das so machen:

    Code:
    try {
     foo(); // hier drin wird eine exceptions geworfen
    } catch(std::runtime_error & ex)
    {
        if(my_id == 0)
       {
              //Irgendeine ausgabe die nur von Prozess mit ID 0 ausgegeben wird
              std::cerr << ex.what() << std::endl;
        }
        MPI_Abort(...);
    }
    Wenn allerdings irgendwo mitten im algorithmus bzw. auf daten die jeder prozess lokal hält nur auf z.B. prozess mit ID 4 etwas passiert. muss dieser auch ein throw machen aber dann wird in dieser obigen Excpetion nicht der error-string ausgegeben und doch das programm beendet.

    Wie erreiche ich denn eine ausgabe die nur einmal aber dann auch vom korrekten prozess ausgegeben wird?

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Ohne jetzt in dieser Richtung schon etwas gemacht zu haben fallen mir hier spontan signals ein.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •