background

Sessions 2015

    Workshop: Einführung in die Parallelprogrammierung mit OpenMP

    Mit dem neuen OpenMP-Standard Version 4.0 sind wieder neue Möglichkeiten in die sehr ausgereifte Parallelisierungsbibliothek eingebaut worden. In diesem Workshop lernen Sie zunächst die Grundlagen der OpenMP-Programmierung. Es werden Schleifen und Code-Bereiche parallelisiert, Sie werden den Scheduler kennen lernen und die Sichtbarkeit von Variablen diskutieren. Danach wird das Task-Konzept von OpenMP erarbeitet und an Beispielen vertieft. Schließlich werden die neuen Möglichkeiten der Version 4 vorgestellt. Natürlich wird in diesem Seminar auch viel über Performance oder „Speedups“ gesprochen und es werden in vielen Fällen unterschiedliche Wege der Implementierung besprochen.

    Voraussetzungen: C/C++ oder C++/CLI
    Sprecher: Bernd Marquardt

    GPU-Programmierung mit Microsoft AMP

    Auch Microsoft bietet mit Visual Studio eine Bibliothek an, um Programme, die eine hohe Datenparallelität haben, auf einer GPU laufen zu lassen. Diese Bibliothek – Accelerated Massive Parallelism (kurz: AMP) ermöglicht es mit relativ einfachen Konstruktionen Schleifen auf einer GPU ablaufen zu lassen. In dieser Session wird die Programmierschnittstelle von AMP vorgestellt und an mehreren Beispielen erklärt. Natürlich werden auch Performance-Vergleiche zur normalen CPU gemacht und ausgewerte.

    Voraussetzungen: C/C++
    Sprecher: Bernd Marquardt

    Performance-Optimierung bei Datenparallelität mit großen Datenmengen

    Irgendwann ist der Cache der CPU voll – und dann wird die Anwendung plötzlich langsamer! Was kann man tun, um hier nicht in die Performance-Falle zu laufen. An Hand mehrere Beispielprogramme wird gezeigt, wie das Problem erkannt werden kann und welche Vorgehensweisen benutzt werden können, um trotzdem eine möglichst hohe Performance bei der Berechnung zu erzielen.

    Voraussetzungen: --
    Sprecher: Bernd Marquardt

    C++11 library components to make a programming scientist happy

    This talk presents a survey over components of the C++11 standard library which facilitate the life of a programming scientist. It will provide a gentle introduction to the random number generator and evolve this to a complete application: the stochastic simulation of share price development. The new meta-programming features helps designing our programs more clearly. For instance, we can (better) deal with the limitation of complex numbers that types cannot mixed. Tuples help us to aim for a more functional and structured programming style in the presence of multiple results.

    Sprecher: Peter Gottschling

    Legacy -> Fluent Code

    Manche Teams schreiben Code so, dass er die zugrundeliegende Intention nicht ausdrückt. C++ fehlten bisher Sprachmittel und Bibliotheken dies einfach zu bewerkstelligen. Oft werden deshalb Implementierungsdetails im Code sichtbar, welche die dahinterliegende Absicht verschleiern. Welche Mechanismen bietet C++ heutzutage, Code so zu transformieren, dass er kürzer wird, unsere Intention besser ausdrückt und wartungsfreundlicher ist. Um dies zu veranschaulichen, werden wir eine vorhandene Codebasis unter Test und in eine Form bringen die diesen Ansprüchen gerecht wird.

    Sprecher: Holger Kolb

    C++ 11/14 in der Praxis

    Mit C++ 11 bzw. C++ 14 haben viele Veränderungen in C++ Einzug gehalten, die das Entwickeln von Anwendungen mit C++ nahezu revolutionieren. Von einfacherem Code bis hin zu sicherem und stabilerem Code führen die Änderungen im Sprachumfang. Vielfach sind die Neuerungen bereits vorgestellt wurden, diese Session möchte nun zeigen, wie Sie sie verwenden. Kommen Sie mit auf eine Reise in modernen C++ Code von heute und sehen Sie an praktischen Beispielen, welche Änderungen am Code sich durch C++ bzw. C++ 14 ergeben und welchen Vorteil Ihr Code und mit Ihre Anwendungen mitnehmen.

    Sprecher: Matthias Wedemeyer

    Debuggen mit Speicherdumps

    Stürzt Ihre Anwendung beim Kunden immer mal wieder ab, ohne dass Sie den Fehler reproduzieren können? Oder bringt Ihre Anwendung Meldungen zu Tage, die Sie ebenfalls in Ihren Tests in vergleichbaren Situationen nicht zu Gesicht bekommen? Dann ist es Zeit, über Speicherdumps nachzudenken. Sie beinhalten vollständigen Zustand Ihrer Anwendung zum Zeitpunkt ihrer Erstellung: Threads, Heaps, Stacks und auf alles haben Sie Zugriff. Lernen Sie in dieser Session, wie Sie Speicherdumps direkt aus einer Anwendung heraus erstellen und wie Sie diese mit dem Visual Studio auswerten. Ganz neben bei tauchen Sie dabei in die Anwendung ab und lernen, wie Sie auch ohne Symbolinformationen mit einem Speicherdump die Ursache eines Fehlers ermitteln können.

    Sprecher: Matthias Wedemeyer

    C++ Dependency Management 2.0

    Im alltäglichen Einsatz verwenden wir eine potentiell steigende Anzahl an immer größeren Bibliotheken. Diese helfen uns schneller und effizienter unsere Ziele zu erreichen, werden ständig gewartet und ersparen nebenbei auch jede Menge Fehlerlösungs- und Dokumentationsaufwand. Gleichzeitig bedeuten sie jedoch einen unmittelbar höheren Aufwand für das Build-und-Dependency Management. Wie bekommt man dieses Problem in den Griff? In der letzten Dekade hat das Build-System CMake diesbezüglich große Fortschritte bei der schnellen und alltäglichen Wiederverwerndbarkeit von C++ Code bewirkt. So fördert zum Beispiel die Unabhängigkeit von spezifischen Build-Systemen zusammen mit Git und innovativen Hostern wie GitHub insbesondere die Entstehung und Verwendung von Open-Source Software. Wie sieht die Zukunft aus? Dependency Manager wie biicode zeigen einen noch komfortableren Weg auf, mit eigenem oder Drittanbieter-Code zu arbeiten. Download, Build und Einbindung von Dependencies wird damit so einfach wie das Installieren einer App aus dem App-Shop. Doch welche Vor- und Nachteile hat dieses System? Welche Alternativen gibt es?

    Sprecher: Patrick Charrier

    Multithreading, richtig gemacht?

    Multithreading in modernem C++ ist hart. Undefined Variables, Deadlocks, Race Conditons, Spurious Wakeups, Lost Wakeups, das Double Checked Locking Pattern ... . Und zu allem kommt noch das neue Speichermodell, das das Leben eines Programmierers auch nicht wirklich einfacher macht. Die Liste der Dinge, die schief gehen können, ist erschreckend lang. In dieser Tour durch das moderne C++ werde ich zeigen, was in Multithreading Programmen schief gehen kann und wie sich dies vermeiden lässt. Die Tour wird an der Oberfläche starten und immer weiter in die Tiefe vordringen.

    Sprecher: Rainer Grimm

    Programmierung zur Compilezeit

    Was haben klassische Template Metaprogrammierung, die neue Funktionen der Type-Traits Bibliothek und constexpr Funktionen gemein? Sie werden alle zur Compilezeit ausgeführt. Damit paaren sie höhere Performanz mit erweiterter Funktionalität. Höhere Performanz, da Berechnung zur Lauf- auf die Compilezeit verlegt werden. Erweiterte Funktionalität, da Programmierung zur Compilezeit den resultierende C++-Sourcecode modifizieren kann. Doch wie funktioniert die ganze Magie? Diesen Blick unter die Decke wird der Vortrag liefern, damit Sie Programmierung zur Compilezeit besser verstehen und einsetzen können.

    Sprecher: Rainer Grimm


Diese Liste kann noch ergänzt bzw. verändert werden.