parallel 2013 » Agenda »
// Softwareentwicklung für Intels Xeon-Phi-Coprozessor
Seit langem gibt es einen Trend, bei der Berechnungen vermehrt hybride Systeme einzusetzen, die aus traditionellen CPUs und spezieller Beschleunigerhardware bestehen. Das Ziel ist die Verbesserung der Applikationsperformance durch Auslagern berechnungsintensiver Aufgaben auf die Beschleunigerhardware ("Offloading"). Typische Beispiele hierfür sind GPUs oder auch Field Programmable Gate Arrays (FPGAs). Solche hybriden Systeme führen typischerweise bei der Entwicklung zu einem erhöhten Aufwand und setzen zudem spezielle und komplexe Umgebungen, z.B. OpenCL, voraus.
Die neuen Xeon-Phi-Coprozessoren sind die jüngste Erweiterung der High-End-Prozessoren von Intel. Die Coprozessoren basieren auf der weit verbreiteten Intel-Architektur, wodurch die eher als störend empfundenen Unterschiede, wie sie bei hybriden Systemen auftreten, abgeschwächt werden. Die neuen Coprozessoren besitzen im Vergleich zu einem Host-System einen massiv-parallelen Chip (57 Rechenkerne) und doppelt so leistungsfähige Instruktionen zur Verarbeitung von SIMD-Vektoren. Entwickler können auf nahezu alle verbreiteten Programmiermodelle für Shared-Memory-Architekturen, wie OpenMP, Threading Building Blocks, Cilk Plus, Message Passing Interface oder OpenCL zurückgreifen. Zusätzlich stehen bereits viele Entwicklungswerkzeuge, wie Compiler, Debugger oder Performance-Tools, bereit oder werden bald verfügbar. Auf dem Coprozessor kommt ein spezieller Linux-Kernel zum Einsatz, der das Portieren existierender Applikationen weiter vereinfacht und darüber hinaus eine weitgehend bekannte Umgebung mit vollständiger IP-basierter Netzwerkanbindung zur Verfügung stellt.
In diesem Workshop geben wir eine Einführung in die Architektur des Xeon-Phi-Coprozessors und diskutieren die Anforderungen an die Software, um das zur Verfügung stehende Potential abzurufen. Wir zeigen diesbezüglich grundlegende Ansätze zur Softwareentwicklung und geben einen Überblick über die verfügbaren (Standard-)Programmiermodelle, sowie deren Anwendung auf dem Coprozessor. Der Schwerpunkt des Workshops wird die Anwendung der Spracherweiterungen zum Auslagern von Code sein (die Intel Language Extensions for Offload) sowie der gezielte Einsatz von Multi-Threading und der SIMD-Instruktionen des Coprozessors.
Die Spracherweiterungen zum Auslagern von Code sind verfügbar für C/C++, aber auch für Fortran und lassen sich entweder über Compiler-Pragmas oder dem Compiler bekannte Schlüsselwörter benutzen. Der Workshop wird beide Varianten behandeln, welche die Teilnehmer anhand einfacher Beispiele selbst umzusetzen lernen. Die damit vermittelten Grundlagen geben den Teilnehmern einen ersten Einblick in die Softwareentwicklung mit dem Xeon Phi Coprozessor.
// Referenten
// Michael Klemm
ist seit 2008 Teil der Intels Software and Services Group, Developer Relations Division. Sein Schwerpunkt liegt auf High-Performance- und Throughput Computing. Er promovierte 2008 mit dem Forschungsschwerpunkt Compiler und Laufzeitsysteme für parallele, verteilte Rechnerarchitekturen. Seine Interessensgebiete umfassen Compilerbau, Programmiersprachendesign, parallele Programmierung sowie Performance-Analyse und -Tuning. Klemm ist Intel-Repräsentant im Standardisierungskomitee von OpenMP und leitet dort die Gruppe zur Entwicklung von Fehlerbehandlungsmechanismen für OpenMP.
// Georg Zitzlsberger
arbeitet bei Intel am Standort Ulm als Technical Consulting Engineer (TCE) für EMEA. Er betreut Softwareentwicklungs-Werkzeuge von Intel, u.a. Intel-Compiler und -Debugger, sowie parallele Programmiermethoden. Zuvor war er mehr als sechs Jahre als Entwickler für Intel-Compiler und -Debugger tätig. Sein gegenwärtiger Schwerpunkt ist Parallelismus- und Performance-Analyse für Intels Xeon-Phi-Coprozessoren mit Intel-MIC-Architektur.