Softwarekonferenz für Parallel Programming,
Concurrency und Multicore-Systeme
Heidelberg, Print Media Academy, 6.-8. April 2016

parallel 2016 » Programm »

// Performance-Engineering-Techniken für moderne Multi- und Manycore-Systeme

Die Devise "Der Compiler wird's schon richten" ist bei der Programmierung von Prozessoren ein weit verbreiteter Irrglaube, der oft dazu führt, potenzielle Leistung moderner CPUs brachliegen zu lassen.

In diesem Workshop erlernen die Kursteilnehmer an ausgewählten Beispielen, wie sie dem Compiler auf die Sprünge helfen können, effizienten Maschinencode zu generieren. Dazu werden Themen wie Superskalarität, Out-of-Order Execution, SIMD-Vektorisierung, Cache-Blocking, Multicore-Programmierung, NUMA u.v.a.m. am Beispiel eines 2D Jacobi Stencil behandelt.

Die erlernten Techniken werden anschließend zur Optimierung einer bestehenden Applikation (HPCG-Benchmark) eingesetzt.

Werkzeuge
---------
- Intel C Compiler
- OpenMP
- VTune, gprof
- likwid, CPU Performance und Energy Counter
- Roofline und Execution-Cache-Memory (ECM) Modell, IACA

Technische Anforderungen
------------------------
Um an den praktischen Aufgaben teilzunehmen, wird ein eigenes Notebook benötigt. Zugang zu Cluster mit sämtlicher benötigter Software wird gestellt.

Agenda
------

9:00-10:30:
Jacobi-Benchmark
Performancemodellierung
Vektorisierung mit SSE und AVX (mit Hands-On)

10:30-10:45: Kaffeepause

10:45-12:00:
Cache-Blocking (mit Hands-On)
Multicore-Modellierung
Parallelisierung mit OpenMP (mit Hands-On)

12:00-13:00: Mittagspause

13:00-14:00:
Performance-Analyse mit likwid, Energieverbrauch mit Intel RAPL Performance Countern
Multi-Socket mit NUMA, Non-Temporal Stores (mit Hands-On)

Zusammenfassung: Singlecore, Multicore, Multisocket

14:00-15:00
HPCG-Benchmark
Vorstellung Intel VTune, Hands-On Performancemessung mit gprof

15:00-15:15 Kaffeepause

15:15-16:00
Verwendung optimierter Bibliotheken, Intel MKL
Detailanalyse, Modellierung und Optimierung von Teilalgorithmen des HPCG

Die Teilnehmer benötigen ein eigenes Notebook (Betriebssystem ist egal), mit dem sie sich mit dem bereitgestellten WLAN verbinden können. Auf dem Notebook muss ein SSH-Client vorhanden sein, mit dem sich die Teilnehmer auf das von den Referenten bereitgestellten Cluster verbinden können.

Skills
Teilnehmer sollten Grundkenntnisse im Umgang mit Linux haben und mit der Programmiersprache C vertraut sein: Code sollten unter Linux übersetzt und Programme ausgeführt werden können. Des Weiteren sind Vorwissen über Aufbau und Funktionsweise moderner Prozessoren hilfreich, jedoch nicht notwendig.

Lernziele
Die Teilnehmer erlernen Aufbau moderner Prozessoren und das Vorgehen, diese effektiv zu verwenden.

// Referenten

// Johannes Hofmann Johannes Hofmann

arbeitet als Wissenschaftler an der Friedrich-Alexander-Universität Erlangen-Nürnberg. Seine Lehr- und Forschungsschwerpunkte sind Performance Modellierung und Engineering, sowie energieeffizientes Höchstleistungsrechnen.


// Franz Richter-Gottfried Franz Richter-Gottfried

arbeitet seit 2011 als wissenschaftlicher Mitarbeiter an der Friedrich-Alexander-Universität Erlangen-Nürnberg. Sein Forschungsschwerpunkt liegt in der Verwendung von FPGA-Beschleunigerkarten für wissenschaftliches Rechnen. In den Lehrveranstaltungen vermittelt er die Grundlagen der Rechnerarchitektur sowie die Funktionsweise und die effiziente Programmierung aktueller Systeme.