Ruprecht-Karls-Universität Heidelberg

This is an archive of our old website and not updated anymore

The current website can be found at conan.iwr.uni-heidelberg.de

Download create_mpihost.sh

create_mpihosts.sh

Ausführen eines MPI-parallelen Programms im Pool

Um MPI-parallel auf mehreren Rechnern im CIP-Pool zu arbeiten, sollten Sie als erstes eine Datei mit den Namen der Rechner erzeugen, die an der Rechnung beteiligt sein sollen. Dazu verwenden Sie bitte das Skript create_mpihosts.sh, das Sie in der Kommandozeile mit

      
        ./create_mpihosts.sh
      
    
aufrufen. Es schreibt in Ihrem Home-Verzeichnis in die Datei mpihosts die Namen derjenigen Rechner, die im Augenblick nicht ausgelastet sind. Danach können Sie parallele Rechnungen mittels
      
        mpirun -np <p> -machinefile ~/mpihosts ./<executable>
      
    
starten. Für <p> setzen Sie die Anzahl der gewünschten Prozesse ein, <executable> ist das gewünschte parallele Programm.

Achten Sie dabei bitte auf folgende Punkte:

  • Rufen Sie vor jedem parallelen Prozessstart das Skript create_mpihosts.sh auf, damit die aktuell nicht ausgelasteten Rechner neu ermittelt werden.
  • Achten Sie auf die Anzahl der Rechner, die in Ihrer mpihosts -Datei eingetragen wurden. Jeder Rechner verfügt über zwei Prozessorkerne, so dass Sie mit zwei Prozessen pro Rechner optimale Leistung erreichen sollten. Jeder Rechner hat daher zwei Eintraege in der Datei.
  • Überschlagen Sie vor der Rechnung den Speicherverbrauch. Auf jedem Rechner sollten Sie höchstens 1.5 GB Speicher verbrauchen, damit die Rechner stabil weiterlaufen.
Sollten Sie einmal eine parallele Rechnung abbrechen wollen, drücken Sie einfach Strg-C. Dabei kann es passieren, dass auf den Knoten einzelne Prozesse hängebleiben. Diese können Sie mit der Kommandozeile
      
        for i in `seq -w 50`; do ssh cip$i killall -9 ./<executable>; done
      
    
sicher entfernen.

Kompilieren eines parallelen Programmes im Pool

Zur Verwendung der MPI-Bibliothek müssen Sie die MPI-Headerdatei inkludieren:

      
        #include <mpi.h>
      
    
Um ein Programm zur parallelen Ausführung im Pool zu kompilieren, verwenden Sie die Befehlszeile
      
        mpicc -o <executable> <prog.c>
      
    
wobei <prog.c> Ihr paralleles C-Programm ist und <executable> der Name der ausführbaren Datei. Schreiben Sie Ihre MPI-Programme am Besten in C, die Weiterentwicklung der C++-Bindings ist unklar. Messungen der elapsed time können ähnlich wie bei OpenMP mit vorgenommen werden:
      
        double tStart = MPI_Wtime();
        double telapsed = MPI_Wtime() - tStart;
      
    


Revision: 1438     Letzte Änderung: 2012-12-04 19