Fraunhofer-Gesellschaft

Publica

Hier finden Sie wissenschaftliche Publikationen aus den Fraunhofer-Instituten.

Ein Vorgehen für die Portierung sequenzieller Software auf Multicore-Plattformen

 
: Christmann, Constantin
: Spath, Dieter; Bullinger, Hans-Jörg

:
:

Stuttgart: Fraunhofer Verlag, 2015, 173 S.
Zugl.: Stuttgart, Univ., Diss., 2015
Schriftenreihe zu Arbeitswissenschaft und Technologiemanagement, 21
ISBN: 3-8396-0879-1
ISBN: 978-3-8396-0879-1
Deutsch
Dissertation
Fraunhofer IAO ()
Software-Entwickler; Software-Architekt; Software; Softwareentwicklung; Multicore-Plattform

Abstract
Seit einigen Jahren sind Multicore-Prozessoren mit zwei oder mehr separaten Prozessorkernen in vielen Servern, Desktop-PCs, Laptops und mobilen Endgeräten vorhanden. Da branchenübergreifend viele Softwareanwendungen bislang als sequenzielle Programme entwickelt worden sind, besteht ein großer Bedarf diese Anwendungen auf Multicore-Plattformen zu portieren und an der Parallelisierung des zugrundeliegenden Programmcodes. In der vorliegenden Arbeit wurde eine Vorgehensweise für die Portierung sequenzieller Softwareanwendungen auf Multicore Plattformen entwickelt. Hierfür wurden die Hemmnisse untersucht, die der Unterstützung von Multicore-Plattformen bei der Softwareentwicklung entgegenstehen. Dabei zeigte sich, dass neben fehlenden softwaretechnischen Methoden für die parallele Programmierung auch höhere Entwicklungskosten und variierende Prozessorarchitekturen wichtige Hemmnisse darstellen. Das entwickelte Vorgehen wirkt diesen Hemmnissen entgegen, indem es den zeitaufwändigen und komplexen Prozess der Portierung in überschaubare Einheiten untergliedert und dabei den Einsatz geeigneter Werkzeuge sowie eine an ökonomischen Rahmenbedingungen ausgerichtete Optimierung der manuellen Parallelisierung vorsieht. Die Vorgehensweise beinhaltet den Einsatz eines parallelisierenden Compilers, für die implizite Parallelisierung des Programms ohne manuellen Aufwand. Da jedoch allein mit Hilfe eines parallelisierenden Compilers häufig keine zufriedenstellende Parallelisierung erreicht wird, ist eine zusätzliche manuelle Parallelisierung unerlässlich. Um den zeitaufwändigen Prozess der manuellen Parallelisierung zu unterstützen, wurde eine Optimierungsmethode für die manuelle Parallelisierung entwickelt und in das Vorgehen integriert. Die Optimierung basiert auf einer ausführlichen Analyse des sequenziellen Programms im Vorfeld der Implementierung. Auf Grundlage dieser Analyse wird eine optimale manuelle Parallelisierung bestimmt, wobei ökonomische Rahmenbedingungen des Portierungsvorhabens (in Form einer Speedup-Vorgabe oder einem vorgegebenen Budget an Entwicklerstunden) berücksichtigt werden können. Um den manuellen Aufwand bei der Anpassung des parallelen Programms an variierende Prozessorarchitekturen zu reduzieren, beinhaltet die Vorgehensweise den Einsatz eines automatisierten Tuning-Verfahrens im Anschluss an die manuelle Parallelisierung. Die Vorgehensweise wurde am Beispiel einer Softwareanwendung aus dem Bereich der Bildverarbeitung erprobt. Zudem wurde die Vorgehensweise in ein etabliertes Vorgehensmodell für die Softwareentwicklung, das V-Modell XT, integriert. Die Ergebnisse aus der Erprobung des Vorgehens zeigen, dass das Vorgehen für die Portierung sequenzieller Software auf Multicore-Plattformen in der Praxis geeignet ist. Weiterhin konnte durch den Vergleich der Vorgehensweise mit dem klassischen Ansatz bestehender Parallelisierungsmethoden gezeigt werden, dass sich durch den Einsatz der Vorgehensweise die Kostenkontrolle und Planbarkeit bei der manuellen Parallelisierung deutlich verbessern lässt und darüber hinaus sogar in bestimmten Fällen eine bessere Qualität der resultierenden manuellen Parallelisierung erreicht werden kann. Weiterhin zeigt die erfolgreiche Integration in das V-Modell XT, dass die Inhalte der Vorgehensweise eine entsprechende Flexibilität aufweisen, um diese in den Kontext bestehender Modelle für die Softwareentwicklung überführen zu können. Dieser Aspekt fördert die Anwendbarkeit der Vorgehensweise in Organisationen, die festgelegte Softwareentwicklungsprozesse einhalten müssen.

: http://publica.fraunhofer.de/dokumente/N-339667.html