Matthias Pester






Grundlagen der Parallelrechnerprogrammierung

  • Vorlesung: Mo., 9:15 - 10:45, Raum 2/B202
  • Inhalt: Parallele Rechnerarchitekturen und deren Nutzung,
    verschiedene Arten und Probleme der Parallelität,
    Beispiele anhand einfacher numerischer Algorithmen,
    Prozessortopologien und Kommunikationskonzepte (PVM, MPI),
    (Teile der Vorlesung wurden von G. Haase in einen Teubner-Band aufgenommen)
  • Abschluss: Beleg (Programmieraufgabe), Schein
  • Benutzungsordnung für PC-Pool und Nutzungshinweise für Linux.
  • Zitate und Links:
  • John v. Neumann:
    "If people do not believe that mathematics is simple, that is because they do not realize how complicated life is."
  • Vorwort zu "Parallele Rechnersysteme ..." [Burkhardt u.a.]:
    "Und siehe da, die Parallelrechner gehorchen aufs Wort. Zugegeben, manchmal erst aufs zweite oder dritte."
  • Gordon Moore über "Moore's Law": "Mir ging es um etwas ganz anderes". (Stern-Interview, 2005)
  • Seymour Cray (Gründer von Cray Research): "Anyone can build a fast CPU. The trick is to build a fast system.")
  • Die schnellsten Supercomputer: Top-500
  • Supercomputer-Beispiele: CRAY XMP, o.ä., CRAY-2, IBM 3090, CM-1, GCPP, CLiC, CHiC, Earth Simulator (Aufbau), JUGENE, ...
    Linux Cluster im MRZ
  • Inbetriebnahme des Chemnitzer Linux-Clusters CHiC (2007)
  • Anschauungsmaterial / Beispiele:
  • Rechenleistungen verschiedener Prozessoren mit verschiedenen Compilern in Abhängigkeit von der Länge der verarbeiteten Felder (Einfluss des Caches und damit des Speicherzugriffs auf die Gesamtleistung).
  • Illustration zur Kommunikation im Hypercube (Java-Applet), Global Exchange Global Exchange,   Global Operation Global Operation,
    Einige Beispiele zur Implementierung von Kommunikationsroutinen in einer Hypercube-Topologie
  • Das "klassische" Problem der 5 Philosophen und seine Veranschaulichung mittels Java
  • Benchmarks auf dem Chemnitzer Linux-Cluster CLiC (2000-2007)
  • Erste Tests nach Inbetriebnahme des Chemnitzer Linux-Clusters CHiC (2007)
  • Zum Demo-Beispiel "Apfelmännchen" das Rahmenprogramm, mit dem ein Master/Worker-Prinzip simuliert wird. Auf den Prozessoren läuft alternativ eines der beiden Unterprogramme a_master oder a_slave.
    Das mittels PVM ausführbare Demo-Programm: amandel.LINUXX64
  • Nur zur Anschauung: ein Occam-Quelltext.
  • Man-Pages zu den Routinen von PVM sowie MPI
    (Diese HTML-Fassung der Man-Pages gehört zu früheren, aber nicht veralteten Versionen).
  • Material zur Übung:
  • Dokumentation einiger für PVM und MPI verwendbarer typischer Hypercube-Kommunikationsroutinen (u.a.) - S. 8-31
  • Spezielle Hinweise zur Benutzung von PVM und MPI mit der aktuellen Installation im MRZ (PVM 3.4.6, Open-MPI 1.4.3)
  • Beispiel eines Hostfiles zur Nutzung von PVM oder MPI.
    Bitte beachten, dass einzelne Rechner vorübergehend nicht erreichbar sein können, siehe Informationen des MRZ
  • Mini-Beispiele "Hello World":   in der „neutralen” Version mit Cubecom-Routinen:   helloc.c,   hellof.f,  
    mit den Makefiles dazu als Vorlage: Make_cube_mpi,   Make_cube_pvm,  
  • und die entsprechenden Programmversionen mit MPI- bzw. PVM-Aufrufen: helloc_mpi.c,   hellof_mpi.f,   hello_pvm.f
    und Makefiles dazu: Make_mpi,   Make_pvm,  
    anzuwenden durch: make -f <makefilename>, bzw. als „Trockentest”: make -n -f <makefilename>,
  • bzw. ein Makefile, das die vier obigen Makefiles nacheinander (oder einzeln) aufruft: Makefile,
    genauere Infos dann mit 'make help'.
    (Abspeichern der hier angegebenen Programmdateien durch Rechtsclick und 'Save Link As...')

  • Eine Übungsaufgabe (Rechnen mit verteilt gespeicherten Vektoren).
  • Erweiterte Aufgabenstellung (Rechnen mit verteilt gespeicherten Matrizen und Vektoren).

  • Als Vorlage für parallele Programme mit Zeitmessung:
  • ein Makefile mit den notwendigen Einstellungen für "MPIcubecom":   Make_zeit   oder
  • ein Makefile mit den notwendigen Einstellungen für "Cubecom" und PVM:   Make_zeit_pvm
  • ein Fortran-Programmbeispiel: zeitf.f
    zu compilieren mit:
       make -f Make_zeit fzeit     (bzw.:  make -f Make_zeit_pvm fzeit) 
  • dasselbe als C-Programmbeispiel: zeitc.c
    zu compilieren mit:
       make -f Make_zeit czeit     (bzw.:  make -f Make_zeit_pvm czeit)  

webstat
webstat(0)