Software-Projektpraktikum: Parallelprogrammierung von Many-Core Architekturen mit OpenMP

Many-Core Prozessoren sind spezielle Mehrkernprozessoren die für einen besonders hohen Grad von Parallelität ausgelegt sind. Das bedeutet, dass sie besonders viele Recheneinheiten (Kerne) besitzen. Systeme mit solchen Prozessoren werden vor allem im High Performance Computing (HPC) eingesetzt, wofür sie mit ihrer hohen Rechenleistung dank der vielen Kerne sehr attraktiv sind. Das hohe Leistungspotential ist aber nur von parallelen Programmen abrufbar die eine gute Skalierbarkeit über die hohe Zahl von Rechenkernen zeigen, also von der kontinuierlichen Hinzunahme von Rechenkernen profitieren. Ziel dieses Praktikums ist das Erlernen der Programmierung aktueller Many-Core Architekturen mit dem Industriestandard OpenMP. Außerdem wird ein Verständnis der speziellen Eigenschaften dieser Architekturen vermittelt indem mit Performanceanalysewerkzeugen und Hilfsmitteln wie der Performancemodellierung das Ausführungsverhalten von parallelen Programmen auf diesen Architekturen untersucht und bewertet wird. Dazu werden die Arbeiten im Praktikum auf den derzeit aktuellsten Many-Core Systemen durchgeführt: auf Systemen der Intel Xeon Phi Architektur (Intel Knights Landing) in Aachen sowie auf Systemen der OpenPOWER Architektur mit NVIDIA-Beschleuniger in Jülich.

Die hauptsächliche Aufgabenstellung ist die Vervollständigung der Implementierung sowie die anschließende Parallelisierung von vorgegebenen Problemstellungen. Diese bestehen aus einer Matrix-Vektor-Multiplikation, einem Sortieralgorithmus sowie einem Bildfilter. Dabei wird jeweils ein Programmgerüst vorgegeben und der entsprechende rechenzeitintensive Programmbereich ist zu vervollständigen und durch das Hinzufügen von OpenMP Direktiven zu parallelisieren. In diesem Vorgehen wird außerdem untersucht, wie sich die erstellten Programme auf den Zielarchitekturen verhalten, wo Optimierungspotential besteht und wo die Grenzen der Skalierbarkeit liegen. Im Rahmen einer Produktivitätsbetrachtung sollen die Programmieraufwände und die Komplexität des Verstehens der Zielarchitekturen erfasst werden.

Die drei Programme liegen in der Programmiersprache C vor. Da der tatsächliche Programmieraufwand gemessen in Zeilen von zu schreibendem Code eher gering ist, erwarten wir, dass sich auch JAVA-Programmierer zurecht finden werden. Kenntnisse in C/C++ sind aber von Vorteil. Die Unterrichtsmaterialien sind in englisch, die Sprache der Veranstaltung ist aber flexibel deutsch oder englisch.

 

Termine und Vorbereitung

Das Softwarepraktikum findet semesterbegleitend mittwochs von 14:15 - 15:45 Uhr im Raum 2356|056 (Seminarraum 5056, Ahornstraße) statt. Die Termine finden wöchentlich bis zwei-wöchentlich statt, die einzelnen Termine werden noch mitgeteilt. Die Teilnahme an den Terminen ist Pflicht. Prüfen sie vor der Anmeldung, ob Sie die Termine wahrnehmen können, da die Terminserie feststeht und nicht mehr geändert werden kann.

Um das benötigte parallele Programmiermodell OpenMP kennen zu lernen, müssen (!) die Teilnehmer ca. zwei Tage am Workshop PPCES teilnehmen, der in 2018 vom 12. - 16.03. stattfinden wird. Dabei wird OpenMP voraussichtlich am 14. + 15. März unterrichtet, die genauen Termine innerhalb der Woche werden aber noch festgelegt. Der Workshop wird auf Englisch gehalten. 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 (sobald die Anmeldung freigeschaltet ist) und vermerken Sie im Kommentarfeld, dass Sie an dem Software-Praktikum teilnehmen. Wir werden Sie aber auch noch einmal darauf aufmerksam machen. Falls ihnen aus guten Gründen die Teilnahme an der Veranstaltung nicht möglichist, teilen sie uns dies bitte rechtzeitig mit. Wir können ihnen dann (zum Teil vertonte) Materialien aus den Vorjahren zur Verfügung stellen. 

Wir empfehlen die Programmierarbeiten an Ihrem eigenen Laptop zu machen, den Sie zu den Praktikumsterminen mitbringen. Alternativ stellen wir für die Praktikumstermine Laptops zur Verfügung, mit denen Sie sich remote auf die HPC-Systeme verbinden können.

 

Voraussetzungen

Programmierkenntnisse in C/C++ oder Java. Linux-Kenntnisse sind von Vorteil, aber nicht zwingend nötig. Die zur Verfügung gestellte Hardware wird unter Linux laufen. Es sind keine speziellen Vorkenntnisse in der Parallelprogrammierung nötig, da die benötigten Programmiermodelle und -konzepte im Rahmen des Praktikums vermittelt werden.

 

Kontakt

Christian Terboven, E-mail: contact@hpc.rwth-aachen.de

 

  • No labels