Parallel 2012 » Agenda »
Intels Methoden zur Parallelprogrammierung
Der Vortrag behandelt Intels Threading Building Blocks, Cilk Plus und Concurrent Collections.
TBB ist eine C++-Template-Bibliothek, die die Entwicklung paralleler Programmen vereinfacht. Ihre Anwendung ist für alle C++-Compiler gedacht und enthält auf Effizienz ausgelegte und einfach zu benutzende Komponenten. Seit mehr als 5 Jahren steht Intel TBB als ausgereifte und kontinuierlich erweiterte Lösung zur parallelen Softwareentwicklung zur Verfügung. Kürzlich wurde mit Version 4.0 eine API zur Modellierung von Kontrollflussgraphen (Flow Graph) hinzugefügt. Diese ermöglicht es Entwicklern, parallele Kontrollflüsse auf direkte Weise zu erstellen und bestehende einer Refaktorierung oder Analyse zu unterziehen.
Parallelisierung auf Thread-Ebene (Task Parallelism) ist eine Notwendigkeit, um moderne Multicore-/Multi-Threading-Prozessoren auszureizen. Sie ist eine Eigenschaft der parallelen Softwareentwicklung, die jedoch durch ihre immanente Komplexität den Entwicklungsaufwand erhöht und damit an allgemeiner Akzeptanz einbüßt. Cilk Plus wurde mit dem Gedanken entwickelt, dieser Komplexität durch hohe parallele Effizienz bei gleichzeitig einfacher Anwendbarkeit zu entgegnen. Zudem bietet es Möglichkeiten Parallelisierung auf Daten-Ebene (Data Parallelism) auf einfache Weise auszudrücken, um von SIMD-Eigenschaften moderner Prozessoren zu profitieren. Intel Cilk Plus steht als Erweiterung für C als auch C++ zur Verfügung und wird von Intel-Kompilern für Linux und Windows unterstützt.
Das Schreiben und Optimieren von parallelen Programmen ist ein notorisch schweres Unterfangen. Mit Concurrent Collections (CnC) stellt Intel ein Programmiermodell zur Verfügung, dass diese Aufgaben erleichtert. Zugleich ist CnC ein einheitliches Programmiermodell für parallele Systeme mit geteiltem Speicher wie auch für verteilte Systeme. Die Besonderheit von Concurrent Collections ist, dass der Programmierer nicht wie üblich explizit bestimmt, welche Teile des Programms parallel auszuführen sind. Stattdessen spezifiziert er nur die tatsächlich notwendigen Abhängigkeiten innerhalb eines Programms, zum Beispiel wo Daten, die von einer Funktion berechnet wurden, von einer anderen benötigt werden. Durch diesen Ansatz entsteht implizite und asynchrone Parallelität auf eine natürliche Weise, die den Programmierer von der Komplexität expliziter Parallelisierung befreit. Die Concurrent Collections stellen eine Laufzeitumgebung mit einer einfachen und C++-Standard-konformen API zur Verfügung.
Referenten
Georg Zitzlsberger
arbeitet als Intel Technical Consulting Engineer (TCE) für EMEA am Standort Ulm und betreut Softwareentwicklungs-Werkzeuge von Intel, u.a. Intel-Compiler und -Debugger, sowie die parallelen Programmiermethoden Intel Cilk Plus und Intel Threading Building Blocks. Zuvor war er mehr als sechs Jahre als Entwickler für Intel-Compiler und -Debugger tätig.
Frank Schlimbach
arbeitet seit 2009 an der Entwicklung des Programmiermodells Concurrent Collections. Er begann die Entwicklung von Software zur Analyse paralleler und verteilter Programme 1999 und führte sie ab 2003 bei Intel fort. Nach seinem Abschluss an der Universität Paderborn promovierte er 2001 an der University of Greenwich.