MWare - Softwaretechnologien für die Multicore-Zukunft

Aus IAO-Wiki

Inhaltsverzeichnis

Hintergrund: Herausforderung Multicore

Logo Bis ins Jahr 2004 hat sich die Leistungsfähigkeit von Prozessoren alle 18 Monate verdoppelt. Bisher haben die Softwareentwickler von diesen Leistungssteigerungen direkt profitiert, da die Anwendungen ohne jede Code-Änderung automatisch schneller wurden. In den letzten Jahren ist jedoch die Kühlung der CPUs zu einem ernsthaften Problem geworden, welches sowohl in der Welt der Desktop-Rechner, in der Welt des High Performance Computings (HPC), aber auch im Bereich Eingebetteter Systeme zunehmend sichtbarer wird. Einführung von Multicore-Prozessoren

Die Antwort der Chip-Hersteller auf dieses Problem ist die Einführung von Multicore-Prozessoren, die mehrere eigenständige Recheneinheiten auf einem Chip vereinen. Bei dem ab 2006 erfolgten Übergang zu Multicore-Prozessoren wurde die Taktfrequenz sogar abgesenkt. Das heißt: Nicht-parallele Anwendungen laufen in vielen Fällen langsamer als zuvor.

Leistungssteigerung - Aber wie?

War es bisher vor allem das High-Performance-Computing, das sich mit den algorithmischen und softwaretechnischen Problemen paralleler Rechner befasst hat, so ist heute jeder Anwendungsentwickler davon betroffen. Eine Leistungssteigerung ist im Wesentlichen nur noch durch bessere Algorithmen und parallele Software zu erreichen.

Vor dem Hintergrund der zu erwartenden Hardwareentwicklung wird die Situation in Zukunft noch komplexer, da Prozessor-Hersteller schon jetzt Prozessoren mit mehr als 12 Kernen planen. Auch bereits parallelisierte Anwendungen werden in Zukunft vor großen Problemen stehen, da eine zunehmende Zahl an parallelen Einheiten in einem Programm zusammenarbeiten müssen. Dies fordert neue Lösungsansätze auf allen Ebenen vom Betriebsystem über die Middlewareschichten und API´s (Application Programming Interfaces) bis hin zu den Algorithmen und Vorgehensmodellen bei der Softwareentwicklung.

Angesichts dieser Herausforderungen haben die vier Fraunhofer-Institute IAO, IESE, ITWM und SCAI ihre Kompetenzen im Kooperationsprojekt MWare gebündelt, um Unternehmen der IT-Branche bei diesem Paradigmenwechsel zu unterstützen und passende Methode und Werkzeuge für einen erfolgreichen Start in die Multicore-Zukunft zu bieten.

Projektbeschreibung

Das Projekt MWare ist ein Kooperationsprojekt von vier Instituten der Fraunhofer-Gesellschaft:

  • Fraunhofer-Institut für Techno- und Wirtschaftsinformatik ITWM
  • Fraunhofer-Institut für Arbeitswirtschaft und Organisation IAO
  • Fraunhofer-Institut für Algorithmen und Wissenschaftliches Rechnen SCAI
  • Fraunhofer-Institut für Experimentelles Software Engineering IESE.

Ziel des Projektes ist es, Prozesse, Methoden und Werkzeuge für die Unterstützung der Softwareentwicklung für Multicore-Architekturen zu erarbeiten und eine Marktübersicht über aktuell verfügbare Methoden und Werkzeuge zur Verfügung zu stellen.

Hintergrund der Aktivitäten ist die zunehmende Verbreitung von Multicore-Prozessoren und die Tatsache, dass eine optimale Ausnutzung der Leistung dieses Prozessortyps einen grundlegenden Wechsel in den Methoden und Herangehensweisen der Softwareentwicklung - verglichen mit den aktuell gängigen Entwicklungsprozessen für Single-Core-Architekturen - erfordert.

Die Fraunhofer-Gesellschaft hat sich zum Ziel gesetzt, diesen Paradigmenwechsel aktiv zu unterstützen und Softwareentwicklern das nötige Rüstzeug für die Zukunft in der Softwareentwicklung mitzugeben. Aus diesem Grunde bündeln die oben genannten Fraunhofer-Institute ihre Kompetenzen zur Optimierung von Softwareentwicklungsprozessen, zur Entwicklung leistungsfähiger Algorithmen, zur Parallelisierung von Anwendungen, zur Performance Optimierung, zur Toolentwicklung sowie bei der Auswahl und Evaluierung von Soft- und Hardware oder der Portierung von Anwendungsprogrammen auf neue Architekturen. Einer der Schwerpunkte des Projekts liegt dabei auch in der Unterstützung der Softwareentwicklung im Embedded Bereich.

Projektergebnisse

Produkte und Lösungen

Marktstudie: Market overview of tools for multicore software development

Das Fraunhofer IAO hat eine Multicore-Marktstudie durchgeführt, die einen produkt- und herstellerneutralen Überblick über verfügbare Werkzeuge für die Multicore-Entwicklung bietet. Ziel ist es, einen Überblick über den Stand der Technik zu geben sowie Entwicklungen auf dem Gebiet der Multicore-Programmierung vorzustellen.

Dabei werden zum einen Softwareprodukte vorgestellt, mit denen sich untersuchen lässt, welche Bestandteile bestehender Programme parallelisiert werden können und sollten. Zum anderen werden Softwareprodukte untersucht, welche die Abläufe innerhalb paralleler Anwendungen überprüfen und auf Schwachstellen hinweisen können.

Für eine Softwareentwicklung, die von vornherein auf Parallelität eingestellt sein soll, bietet die Marktstudie einen Überblick über die Entwicklungen in den Bereichen parallele Algorithmen, parallele Datenstrukturen, parallele Entwurfsmuster und parallele Programmiersprachen. Dieser Überblick ist auch für die Parallelisierung bestehender Software interessant.

FESPa (Framework for Embedded Systems Parallelization)

FESPa (Framework for Embedded Systems Parallelization) ist ein Werkzeug des Fraunhofer IESE, welches eine automatische Partitionierung und Parallelisierung von Datenflussbasierten Steuerungs- und Regelungssystemen vornimmt. Es optimiert Softwaresysteme anhand von verfügbaren Speicherhierarchien und Kommunikationsschnittstellen, sowie anhand von heterogenen Befehlssätzen unterschiedlicher Prozessorkerntypen. Üblich sind hier Kombinationen von regulären Prozessorkernen und DSP bzw. FPGA basierten Coprozessoren. Unterstützt wird heute das Werkzeug Simulink von The Mathworks.

Eingebettete Systeme werden häufig Modellgetrieben entwickelt, beispielsweise mittels Datenflusssprachen. Gleichzeitig werden diese jedoch sehr nah an der Hardware ausgeführt. Dies stellt Entwickler insbesondere dann vor Probleme, wenn diese Systeme auf Mehrkernhardware ausgeführt werden sollen. Bei komplexeren Hardwareplattformen treten hierbei häufig Synchronisationsengpässe wie gemeinsame Kommunikationsschnittstellen und gemeinsamer Speicher auf, die die Ausführgeschwindigkeit des Systems verlangsamen. Der Geschwindigkeitsgewinn durch die Parallelisierung geht so verloren. FESPa unterstützt Entwickler bei der Parallelisierung und bei dem Deployment der Systeme, um optimale Steigerungsraten durch eine parallele Ausführung zu erreichen.

FESPa skaliert von Multicore-Plattformen bis zu Mehrgeräteplattformen, welche durch Bussysteme miteinander verbunden sind. Neben der reinen Rechenleistung lassen sich eine Vielzahl anderer Optimierungskriterien integrieren, beispielsweise der Energieverbrauch, Kosten oder die Wartbarkeit des Systems.

Fraunhofer Virtual Machine

Die Fraunhofer Virtual Machine (FVM) ist eine Kommunikations-Bibliothek und Laufzeitumgebung für parallele Anwendungen, mit der ein PGAS-Programmiermodell realisiert wird. Sie wird vom Fraunhofer ITWM entwickelt und bietet eine einfache und zuverlässige Laufzeitumgebung für dynamische Anwendungen mit hohen Anforderungen an Rechenkapazität und IO.

Die FVM zielt darauf ab, die Kommunikations- und Synchronisationseffekte einer parallelen Anwendung zu minimieren. Darüber hinaus bietet sie ein einfaches Programmiermodell, bei dem der Entwickler die Kontrolle über die Daten hat und einfacher asynchrone Algorithmen entwickeln kann.

Key-Features sind:

  • „One-sided“ Kommunikation
  • Kein Blocken und asynchrone Operationen
  • Queueing von Anfragen
  • Globale Sicht auf die Daten
  • Leichtgewichtiges Interface
  • Low-Level und schnelle Implementierung

Die FVM bietet einen partitionierten Adressraum (PGAS), der sich vom Message Passing Modell mit seiner Send/Receive-Semantik, wie MPI sie bietet, unterscheidet. Der Adressraum der FVM bildet einen gemeinsamen globalen Speicherbereich, der über alle Cluster-Nodes verteilt ist und auf den von allen Nodes zugegriffen werden kann.

Logo

GraPA Parallelisierungs-Framework

Logo GraPA ist ein Parallelisierungs-Framework des Fraunhofer ITWM, das es ermöglicht, auf einfache Weise effizienten und portablen Simulations-Code zu erzeugen. Es passt sich an Multicore- und Distributed-Memory-Architekturen an, sodass sich der Anwender auf die Modellierung und das Entwickeln performanter Algorithmen unabhängig von der Hardware konzentrieren kann.




Key-Features sind:

  • Algorithmen werden mit einem korrespondierenden Graphen assoziiert
  • Optimierung und Parallelisierung wird vollständig auf Graph-Ebene durchgeführt
  • Algorithmen können unabhängig von Hardware-Details implementiert werden
  • Effiziente Hardwarenutzung: GraPA optimiert Speicherzugriffe und Datenaustausch
  • Automatisierte Lastbalancierung
  • Derzeit kompatible Plattformen: Multicore- und Cell-Clusters
  • Große Flexibilität durch C++-Templates
  • Einfache Verknüpfung verschiedener numerischer Methoden (multiphysics simulations)
  • Eine bestehende Codebasis lässt sich wiederverwenden

Many Core Thread Package (MCTP)

Das Many Core Thread Package (MCTP) ist eine anwenderfreundliche Bibliothek zur plattformunabhängigen Thread-Programmierung vom Fraunhofer ITWM. Es ist ein zentrales Werkzeug zur effektiven Nutzung aktueller und zukünftiger Multicore-Systeme und hilft dem Anwender, die Entwicklungszeiten für parallele Applikationen deutlich zu verkürzen.

Das MCTP verwendet Threadpools, eine schnelle und einfache Technik des Parallelen Programmierens. Durch Kombination des MCTP mit der ebenfalls am ITWM entwickelten Fraunhofer Virtual Machine (FVM) entsteht ein mächtiges Paket zur Programmierung von Multicore-Clustern.

Key-Features sind:

  • Plattformunabhängigkeit (Linux/Windows 32/64 Bit)
  • Synchronisationsmöglichkeit zwischen Threadpools
  • Aktive und passive Thread Synchronisation
  • Volle Kontrolle über Threads (init, start, stop, wait, exit)
  • Atomare Operationen und Thread Affinitäten
  • Volle Systemkontrolle bezüglich Thread-To-Core-Mapping (logische und physikalische Cores)

SAMG (Algebraische Mehrgitterverfahren für Systeme)

SAMG (Algebraische Mehrgitterverfahren für Systeme) ist eine Bibliothek des Fraunhofer SCAI mit Routinen zur hocheffizienten Lösung großer linearer Gleichungssysteme mit dünnbesetzten Matrizen.

Gleichungssysteme dieser Art bilden den numerischen Kern der meisten Simulationssoftwarepakete. Dabei macht in der Regel die numerische Lösung dieser linearen Gleichungssysteme den bei weitem rechenintensivsten Teil einer kompletten Simulation aus. Gegenüber klassischen Verfahren (zum Beispiel durch ILU vorkonditionierte Verfahren der konjugierten Gradienten) hat SAMG den großen Vorteil einer weitestgehenden numerischen Skalierbarkeit. Das bedeutet, dass der Rechenaufwand mit SAMG linear von der Anzahl der Unbekannten abhängig ist.

Je nach Anwendung und Problemgröße kann der dadurch bedingte Rechenzeitgewinn ein bis zwei Größenordnungen ausmachen. Dabei lässt sich SAMG genauso einfach in ein existierendes Simulationspaket integrieren, wie ein klassisches Verfahren.

Weiterführende Informationen

Kontakt

Anette Weisbeckerapl. Prof. Dr.-Ing. habil. Anette Weisbecker
Fraunhofer IAO
anette.weisbecker@iao.fraunhofer.de