Seminar Paralleles Rechnen

In dem Seminar sollen aktuelle Themen aus dem Bereich High Performance Computing bearbeitet werden. Dabei wird ein Schwerpunkt auf selbständiges praktisches Arbeiten gelegt. Die Themen werden teilweise in Kooperation mit wissenschaftlichen Einrichtungen wie beispielsweise dem GeoForschungszentrum (GFZ) und dem Potsdamer Institut für Klimafolgenforschung (PIK) bzw. Anwendern aus den naturwissenschaftlichen Instituten der Universität Potsdam gestellt.


Veranstalter

Prof. Dr. Bettina Schnor, Institut für Informatik
Steffen Christgau, Institut für Informatik


Modulnummern

  • Bachelor Informatik:
    3520
  • Bachelor Computational Science:
    555701 Teilleistung zum Modul 6020
  • Master Informatik:
    3521
  • Master Computational Science:
    555111 Teilleistung zum Modul 10010

Ort/Termine

Das Seminar wird Mittwoch von 14:00 Uhr bis 18:00 Uhr im Raum 03.04.1.03 stattfinden.

Aktuelles
Abschlussvorträge 24.09.2014, 9:30 Uhr
Zwischenstandstreffen 10.09.2014, 10:00 Uhr
Zwischenstandstreffen 27.08.2014, 10:00 Uhr
Zwischenstandstreffen 11.06.2014, 14:00 Uhr
Besprechung der Aufgabenstellungen 23.04.2014, 15:00 Uhr
Themenvorstellung 09.04.2014, 14:15 Uhr

Materialien


Anforderungen

  • Selbstständige Einarbeitung in die Aufgabenstellung und Absprachen mit den Betreuern
  • Teilnahme an den Zwischenstandstreffen und Berichte zum aktuellen Zwischenstand bzw. individuelle Vorträge
  • Abschlussvortrag
  • Schriftliche Ausarbeitung zwei Wochen nach Abschlussvortrag (doppelseitig ausgedruckt)

Themenliste

  1. Multicore Programming with OpenMP and MPI / Erweiterung des Zellularautomaten
    Bereich: MPI, Multicore-Programmierung
    Der aus der Vorlesung Paralleles Rechnen bekannte Zellularautomat soll um eine 2-dimensionale Zerlegungen erweitert werden. Weiterhin werden Muticorearchitekturen immer wichtiger. Daher kommen Fragen auf wie: Wie verhalten sich reine MPI Anwendungen auf einem Cluster von Multicoremaschinen im Gegensatz zu hybriden Ansätzen die MPI und OpenMP nutzen? Diese Frage soll beantwortet werden, indem der aus der Vorlesung bekannte Zellularautomat mit MPI, OpenMP und einer Hybriden Variante implementiert und anschließend, die verschiedenen Varianten verglichen werden. Plattform: Zuse-Node mit Dual-Quadcore Nehalem (8 Cores), ZEIK-Computeserver mit Quad-12 Core Magny Cours (48 Cores).
    Bearbeitet von Kevin D.
  2. Bewertung von non-blocking Collectives
    Bereich: MPI, Parallelisierung
    Nichtblockierende kollektive Operationen (z.B. IBcast in Analogie zu ISend) sind für den MPI-Standard Version 3 vorgesehen. Es existieren bereits entsprechende Implementierungen. Im Rahmen des Praktikums sollen vorhandene Anwendungen (bereits parallelisierte Klimasimulation POTSDAM-3, FFT) mit Blick auf die NBCs optimiert werden.
  3. Effiziente FFT-Implementierung auf Multicores
    Bereich: Multicore-Programmierung
    Schnelle Fourier-Transformationen (FFT) sind in der Signalverarbeitung und in den Naturwissenschaften unverzichtbar. Es existieren verschiedene Implementierungen, die für diverse Architekturen optimiert worden sind. Eine exemplarische Implementierung für Multicore-Systeme soll hinsichtlich der darin vorgenommenen Optimierungen untersucht werden. Die Behandlung des Themas schließt den mathematischen Hintergrund mit ein. Siehe auch Chow/Fossum/Brokenshire: "Scientific Computing with Multicores and Accelerators" S. 171 ff. (am Lehrstuhl verfügbar).
  4. CHARM++
    Bereich: Programmiermodelle
    Programming multicore or manycore architectures is a hard challenge particularly if one wants to fully take advantage of their computing power. Moreover, a hierarchical topology implies that communication performance is heterogeneous and this characteristic should also be exploited. We developed two load balancers for Charm++ that take into account both aspects, depending on the fact that the application is compute-bound or communication-bound. This work is based on our TreeMatch library that computes process placement in order to reduce an application communication costs based on the hardware topology. We show that the proposed load-balancing schemes manage to improve the execution times for the two aforementioned classes of parallel applications.
    Quelle: ieeecluster13conference.sched.org
  5. OpenACC-Compiler-Vergleich
    OpenACC ist ein offener Standard, der - ähnlich wie OpenMP - Anweisungen zur automatischen Parallelsierung von Code durch den Compiler definiert. Der Code wird dabei primär für Grafikkarten erzeugt. Jedoch waren bisher nur kommerzielle oder akademische Compiler, die OpenACC-Unterstützung bieten, verfügbar. In der GNU Compiler Collection wird derzeit an einer Unterstützung für OpenACC gearbeitet. Bei der Bearbeitung des Themas soll ein Vergleich der erreichbaren Performance zwischen den verfügbaren OpenACC-Compilern gezogen werden.
    Bearbeitet von Alexander L.
  6. Vergleich von OpenMP 4.0 und OpenCL für EasyWave
    Bereich: Grafikkarten/Beschleunigerprogrammierung
    OpenMP 4.0 definiert ähnlich wie OpenACC Anweisungen, um Code durch den Compiler parallelisieren zu lassen und diesen auf Beschleunigern auszuführen (offloading). Im Gegensatz zur automatisierten Parallelisierung mit OpenMP wird mit OpenCL eine explizite parallele Programmierung vorgenommen. Mit der existierenden Anwendung EasyWave soll der Vergleich zwischen den beiden Programmieransätzen sowie existierenden Parallelisierungen mit CUDA und OpenACC vorgenommen werden.
  7. Tuning und Benchmarking und HPC-Systemen
    Bereich: Clustercomputing
    Für effizientes Clustercomputing ist die Leistungsfähigkeit der verwendeten Hard- und Software ein kritischer Aspekt. Die Bewertung von Systemen erfolgt mittels Benchmarks. Hier soll eine Übersicht bestehender Benchmarks erstellt und deren Aussagekraft für die Bewertung eines Systems verglichen werden. Weiterhin von Bedeutung ist eine effiziente MPI-Implementierung. Diese bieten meist diverse Parameter, die ihre Leistungsfähigkeit beeinflussen können. Im Rahmen dieses Themas sollen diese ebenfalls betrachtet werden sollen. Der Fokus liegt hier insbesondere auf OpenMPI oder Intel MPI.
    Bearbeitet von Tobias J.
  8. Intel Xeon Phi
    Bereich: Beschleunigerprogrammierung
    Mit dem Intel Xeon Phi bietet Intel eine Beschleunigerkarte auf Basis bewährter x86-Technologie an. Die Karte bietet (je nach Generation) mehr als 50 Prozessorkerne, die miteinander vernetzt sind. Zur Progammierung bietet sich daher u.a. MPI an. Neuere Generationen besitzen mehrere Threads pro Kern, sodass zusätzlich bspw. auch OpenMP genutzt werden kann. Im Rahmen der Aufgabenstellung soll eine existierende Anwendung auf den Xeon Phi portiert und die erreichbare Performance bewertet werden.
    Bearbeitet von Johannes S.

Die Themen 7 und 8 werden von CPU 24/7 vergeben.


Literatur

Parallel Programming
Michael J. Quinn
Mcgraw-Hill Higher Education, 2004


Parallele Programmierung mit MPI
Peter Sanders, Thomas Worsch
Logos Verlag, 1997


Designing and Building Parallel Programs
Ian Foster
Addison Wesley, 1995


Scalable Parallel Computing: Technology, Architecture, Programming
Hwang/Xu
WCB/McGraw-Hill, 1998


Scientific Computing with Multicore and Accelerators
Jakub Kurzak, David A. Bader, Jack Dongarra
CRC Press, 2010