2014 - Parallel Programming Models for Applications in the Area of High-Performance Computation (HPC)

 

Ziel und Aufgabe

Das Ziel des Projekts ist die Parallelisierung eines gegebenen (!) Algorithmus auf einer CPU und einer GPU. Alle Teilnehmer des Praktikums müssen drei Programmversionen durch Abänderung des gegebenen Codes erstellen, die jeweils ein anderes paralleles Programmiermodell einsetzten. Zu benutzen sind:

a) OpenMP: direktiven-basierte Shared-Memory Parallelisierung für CPUs
b) CUDA: Parallelisierung für NVIDIA GPUs
c) OpenACC: direktiven-basierte Parallelisierung für GPUs

Diese drei Paradigmen können entweder für C/C++ oder Fortran eingesetzt werden. Java (und weitere Programmiersprachen) werden von ihnen nicht nativ unterstützt. Da aber nur Lesen und Abändern des Codes erforderlich ist (kein komplettes Neuschreiben!), werden sich auch reine Java-Programmierer zurechtfinden. C/C++ Kenntnisse sind aber von Vorteil!
Da das Konzept der Parallelprogrammierung für die drei Programmiermodelle relativ ähnlich ist (insbesondere für CUDA und OpenACC), können meistens auch ähnliche Programmieransätze verwendet werden; natürlich sind aber auch neue Ideen erlaubt. Dabei muss der vorgegebene Code normalerweise nicht bis ins kleinste Detail verstanden werden und nur bestimmte Code-Regionen abgeändert werden. Die notwendige Hardware wird vom Rechen- und Kommunikationszentrum zur Verfügung gestellt.

Die besondere Herausforderung liegt hierbei neben der korrekten Implementierung insbesondere in dem Erreichen einer möglichst guten Performanz. Zur Dokumentation ist die Pflege eines stichwortartigen Entwicklertagebuchs ebenso eine Teilaufgabe innerhalb des Projekts.

Termine und Vorbereitung

Das Software-Praktikum findet (semesterbegleitend) mittwochs von 15.00 - 16.30 h im Seminarraum 4 des Rechen- und Kommunikationszentrums (Kopernikusstr. 6, Aachen) statt. Die Termine finden im Normalfall jede zweite Woche statt. Die einzelnen Termine werden noch mitgeteilt. Die Teilnahme an den Terminen ist Pflicht. Die Veranstaltungssprache ist Deutsch.

Um den Einstieg in die parallele Programmierung zu finden müssen die Teilnehmer ca. zwei Tage am Workshop PPCES (10. März - 14. März 2014, vermutlich davon Mittwoch und Donnerstag) teilnehmen: ~1 Tag zur Parallelprogrammierung mit OpenMP & 1 Tag zur GPU Programmierung mit OpenACC. Der Workshop wird auf Englisch gehalten. Eine Einführung in CUDA wird während des Praktikums stattfinden. Es finden dann entsprechend weniger Termine während des Semesters statt um die investierte Zeit für den Workshop aufzurechnen. Bitte melden Sie sich auf der Webseite des PPCES Workshops selbstständig für die entsprechenden Tage an und vermerken Sie im Kommentarfeld, dass Sie an dem Software-Praktikum teilnehmen. Wir werden Sie aber auch noch einmal darauf aufmerksam machen.
Falls aus guten Gründen die Teilnahme an dem Workshop nicht geschehen kann, teilen Sie uns dies bitte rechtzeitig mit. Wir können Ihnen dann (zum Teil vertonte) Folien vom letzten Jahr zur Vorbereitung zur Verfügung stellen.

Es ist möglich (aber unwahrscheinlich), dass wir die GPU Programmierung nicht mit OpenACC sondern mit dem Accelerator Model von OpenMP 4.0 vornehmen. Die Einführung während des PPCES Workshops wäre dann entsprechend auch mit OpenMP 4.0.

Der Algorithmus

Es soll ein unvorkonditionierter CG-Algorithmus (Conjugate Gradient) zum Lösen eines dünnbesetzten linearen Gleichungssystems der Form A * x = b parallelisiert werden. Bewertet wird hierbei die Laufzeit die zum Erreichen des Konvergenzkriteriums benötigt wird (nicht (!) die Gesamtlaufzeit). Mehr Details zum Algorithmus werden während der Veranstaltung gegeben.
Dünnbesetze Matrizen kommen häufig in ingenieurswissenschaftlichen Simulationen vor. Das bedeutet, dass die Matrizen sehr viele Nulleinträge besitzen und oft nur um die Hauptdiagonale Werte ungleich Null enthalten. Um Speicherplatz zu sparen, werden nur die von Null verschiedenen Einträge gespeichert (z.B. im sogenannten CRS-Format).

Kontakt

Sandra Wienke
E-mail: contact@hpc.rwth-aachen.de


Abschlußinformationen

  • Keine Stichwörter