University of 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

Sorry, this page is only available in german.

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.
Um die lästigen Nachfragen zum Akzeptieren des Fingerprints und des eigenen Passworts zu umgehen, kopieren Sie bitte einerseits die Datei known-hosts in Ihr .ssh-Verzeichnis:
      
        cp /export/home/dune/dunekurs/known_hosts .ssh
      
    
und erzeugen sich dann ein RSA-Schlüsselpaar (Passwort leer lassen!) mittels
      
        ssh-keygen -t rsa
      
    
Dieses hängen Sie dann an die Liste akzeptierter Schlüssel an:
      
         cat .ssh/id_rsa.pub  >> .ssh/authorized_keys
      
    
In Zukunft können Sie sich also über ssh bei sich selbst (aber auf einem anderen Pool-Rechner) ohne Passwort einloggen und damit auch das obige Skript create_mpihosts nicht-interaktiv verwenden.

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: 2242     Last changed: 2016-10-07 11