80 likes | 212 Views
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI-Praxis Einführung. Oswald Haan ohaan@gwdg.de. Zugang. Zugang zum GWDG-Cluster : Notebook starten und Netzzugang einrichten ssh -Client PuTTY laden: http ://www.chiark.greenend.org.uk / ~sgtatham/putty/download.html
E N D
GWDG – KursParallelrechner-Programmierung mit MPI MPI-PraxisEinführung Oswald Haan ohaan@gwdg.de
Zugang Zugang zum GWDG-Cluster : • Notebook starten und Netzzugang einrichten • ssh-Client PuTTY laden:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html • und ausführen: putty.exe • startet xterm-Fenster auf gwdu102.gwdg.de • Mit Benutzerkennung + zugehörigem Passwort einloggen Parallelrechner-Programmierung mit MPI
Beispiel-Programme • Alle Übungsbeispiele liegen in den Verzeichnissen~ohaan/Uebungen_f~ohaan/Uebungen_c • Kopieren der Beispiele in ein eigenes Verzeichniscp –r ~ohaan/Uebungen_f/* . • Editieren, Übersetzen, Binden und Starten von Programmen auf dem Einwahl-Knoten gwdu102 • Bearbeitung der Programme auf dem GWDG-Clusterin der LSF-Queue kurs-mpioder kurs-fat Parallelrechner-Programmierung mit MPI
Die Kurs-Queues • kurs-mpi : gwdc001, gwdc002 je 16 cores • gwdn001, gwdn002 je 8 cores • kurs-fat: gwda001, gwda002 je 64 cores • gwdp001, gwdp002, je 48 cores • Weitere Informationen zu Batch-Verarbeitung im Wiki „Scientific Compute Cluster“ • http://wiki.gwdg.de/index.php/Scientific_Compute_Cluster Parallelrechner-Programmierung mit MPI
Aufgabe 1: Übersetzen und Binden • Dateien im Verzeichnis Uebungen_f/Zugang • Umgebung für Intel-Compiler und Intel-MPI laden: • > moduleaddintel/compiler • > moduleaddintel-mpi • Einfacher: vorgefertigte Datei ausführen: • > . ./modules.x • Sequentielles Programm hello.f • > ifort -o hellohello.f > ./hello • MPI-paralleles Programm hello_mpi.f Übersetzen und Binden mit: • > mpiifort–o hello_mpi.exe hello_mpi.f Parallelrechner-Programmierung mit MPI
Aufgabe 2:Starten paralleler Jobs Interaktiv: > mpirun–n 2 ./hello_mpi.exe Mit LSF bsub: > bsub–n 8 –q kurs-fat–a intelmpi -o out.%Jmpirun.lsf./hello_mpi.exe Mit LSF Skript: > bsub< lsf.job #!/bin/sh #BSUB -q kurs-fat #BSUB -W 1:00 #BSUB -n 8 #BSUB -o out.%J #BSUB -a intelmpi mpirun.lsf ./hello_mpi.exe Parallelrechner-Programmierung mit MPI
Aufgabe 3:Zeitmessung Real-Zeit (elapsed time) in sec. : MPI_WTIME() Genauigkeit in sec : MPI_WTICK() Übersetze Programm zeit_mpi.f(mit makefile) Starte zeit_mpi.exe mit : > mpirun–n 1 ./zeit_mpi.exe Parallelrechner-Programmierung mit MPI
Aufgabe 4:Rechengeschwindigkeit Matrix-Vektor Multiplikation Übersetzung von dgemv.ftime_dgemv.fmit makefile(im Verzeichnis Uebungen_f/MV-seq) mit mpiifort, verschiedene Optimierungsstufen Abrollen, Abroll-Tiefe: 2,4,8 (dgemv_u8.f) Einsatz von Bibliotheken: MKL moduleaddintel/mkl Vergleiche mit max. Leistung von 8,8 Gflop/s (2,2 GHz Taktrate) Parallelrechner-Programmierung mit MPI