Grundlagen der Parallelrechnerprogrammierung
Inhalt:
- Parallele Rechnerarchitekturen und deren Nutzung,
verschiedene Arten und Probleme der Parallelität,
Beispiele anhand einfacher numerischer Algorithmen,
Prozessortopologien und Kommunikationskonzepte
(PVM, MPI, OpenMP), - Teile der Vorlesung wurden von G. Haase in einen Teubner-Band aufgenommen. 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
(Java-Applet),
Global Exchange,
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
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(0) |