Zur Kurzanzeige

dc.date.accessioned2008-01-16T08:07:04Z
dc.date.available2008-01-16T08:07:04Z
dc.date.issued2008-01-16T08:07:04Z
dc.identifier.uriurn:nbn:de:hebis:34-2008011620017
dc.identifier.urihttp://hdl.handle.net/123456789/2008011620017
dc.format.extent2219156 bytes
dc.format.mimetypeapplication/pdf
dc.language.isoeng
dc.rightsUrheberrechtlich geschützt
dc.rights.urihttps://rightsstatements.org/page/InC/1.0/
dc.subjectparallelizationeng
dc.subjectparallel programmingeng
dc.subjectOpenMPeng
dc.subjectAthenaMPeng
dc.subjectparallel programming surveyeng
dc.subjectfrequently made mistakeseng
dc.subjectParawikieng
dc.subjectprogrammer's checklisteng
dc.subjectThinking Parallel Weblogeng
dc.subjectdesign patternseng
dc.subjectgeneric componentseng
dc.subjectgeneric lockingeng
dc.subjectsynchronization patternseng
dc.subjectlock adapterseng
dc.subjectscoped lockingeng
dc.subjectguard objectseng
dc.subjectdeadlockseng
dc.subjectlock hierarchieseng
dc.subjectleveled lockseng
dc.subjectdual-guardseng
dc.subjectn-guardseng
dc.subjectsingletonseng
dc.subjectdata-parallel patternseng
dc.subjecttask poolseng
dc.subjectbusy waitingeng
dc.subjectthread cancellationeng
dc.subject.ddc004
dc.titleA User-Centric Perspective on Parallel Programming with Focus on OpenMPeng
dc.typeDissertation
dcterms.abstractThe process of developing software that takes advantage of multiple processors is commonly referred to as parallel programming. For various reasons, this process is much harder than the sequential case. For decades, parallel programming has been a problem for a small niche only: engineers working on parallelizing mostly numerical applications in High Performance Computing. This has changed with the advent of multi-core processors in mainstream computer architectures. Parallel programming in our days becomes a problem for a much larger group of developers. The main objective of this thesis was to find ways to make parallel programming easier for them. Different aims were identified in order to reach the objective: research the state of the art of parallel programming today, improve the education of software developers about the topic, and provide programmers with powerful abstractions to make their work easier. To reach these aims, several key steps were taken. To start with, a survey was conducted among parallel programmers to find out about the state of the art. More than 250 people participated, yielding results about the parallel programming systems and languages in use, as well as about common problems with these systems. Furthermore, a study was conducted in university classes on parallel programming. It resulted in a list of frequently made mistakes that were analyzed and used to create a programmers' checklist to avoid them in the future. For programmers' education, an online resource was setup to collect experiences and knowledge in the field of parallel programming - called the Parawiki. Another key step in this direction was the creation of the Thinking Parallel weblog, where more than 50.000 readers to date have read essays on the topic. For the third aim (powerful abstractions), it was decided to concentrate on one parallel programming system: OpenMP. Its ease of use and high level of abstraction were the most important reasons for this decision. Two different research directions were pursued. The first one resulted in a parallel library called AthenaMP. It contains so-called generic components, derived from design patterns for parallel programming. These include functionality to enhance the locks provided by OpenMP, to perform operations on large amounts of data (data-parallel programming), and to enable the implementation of irregular algorithms using task pools. AthenaMP itself serves a triple role: the components are well-documented and can be used directly in programs, it enables developers to study the source code and learn from it, and it is possible for compiler writers to use it as a testing ground for their OpenMP compilers. The second research direction was targeted at changing the OpenMP specification to make the system more powerful. The main contributions here were a proposal to enable thread-cancellation and a proposal to avoid busy waiting. Both were implemented in a research compiler, shown to be useful in example applications, and proposed to the OpenMP Language Committee.eng
dcterms.abstractDer Software-Entwicklungsprozess für Programme, die mehrere Prozessoren ausnutzen wird üblicherweise als parallele Programmierung bezeichnet. Aus mehreren Gründen ist parallele deutlich schwieriger als sequentielle Programmierung. Während der letzten Jahrzehnte war von diesem Problem nur eine schmale Randgruppe betroffen: Ingenieure, die an der Parallelisierung von hauptsächlich numerischen Anwendungen im Hochleistungsrechnen arbeiteten. Seit Multi-Core Computerarchitekturen weite Verbreitung gefunden haben, hat sich das geändert. Heutzutage ist die parallele Programmierung ein Problem für eine bedeutend größere Gruppe von Entwicklern. Ziel dieser Arbeit war das Erkunden von Wegen, um die parallele Programmierung für diese Gruppe einfacher zu gestalten. Dazu wurden verschiedene Teilziele verfolgt: den Stand der Technik zu erfassen, die Kenntnisse der Entwickler über dieses Thema zu verbessern und den Programmierern mächtige Abstraktionen zur Erleichterung ihrer Arbeit an die Hand zu geben. Zunächst wurde eine Umfrage unter parallelen Programmierern durchgeführt. Aus den Antworten von über 250 Teilnehmern konnten Erkenntnisse über die verwendeten Systeme, Sprachen und deren Probleme gewonnen werden. Weiterhin wurde auf Basis von Lehrveranstaltungen zum Thema Parallelverarbeitung an der Universität Kassel eine Studie zu häufigen Fehlern durchgeführt. Daraus konnte später eine Checkliste für Programmierer erstellt werden, damit die Fehler in Zukunft vermieden werden können. Um die Kenntnisse der Programmierer auszubauen und Erfahrungen und Wissen auf dem Gebiet der parallelen Programmierung an einer Stelle zu vereinen, wurde im Internet eine Ressource erstellt - das Parawiki. Ein weiterer wichtiger Schritt in diese Richtung war der Aufbau des Thinking Parallel Weblogs, in dem bereits mehr als 50.000 Interessierte Aufsätze zum Thema gelesen haben. Bezüglich des dritten Ziels (mächtige Abstraktionen) konzentriert sich die Arbeit auf ein einziges paralleles Programmiersystem: OpenMP. Die Hauptgründe für diese Entscheidung waren seine leichte Bedienbarkeit und seine hohe Abstraktionsebene. Auch hier wurden zwei unterschiedliche Forschungsansätze verfolgt. Aus dem Ersten ging die parallele Bibliothek AthenaMP hervor. Sie enthält so genannte generische Komponenten, welche von Entwurfsmustern der parallelen Programmierung abgeleitet wurden und stellt Funktionalität zur Verfügung, um z.B. die von OpenMP bereit gestellten Locks zu erweitern, Operationen auf großen Datenmengen auszuführen (datenparallele Programmierung) und die Implementierung irregulärer Algorithmen mit Hilfe von Taskpools zu erleichtern. AthenaMP ermöglicht den direkten Einsatz der Komponenten in Programmen und unterstützt dies durch gute Dokumentation. Darüber hinaus können Entwickler die Quellen einsehen und daraus lernen und Compilerhersteller sind in der Lage, die Bibliothek als Testfall für ihre OpenMP-Compiler einzusetzen. Der zweite Ansatz war die Erweiterung der OpenMP-Spezifikation. Die wichtigsten Beiträge sind Erweiterungen zum Abbruch von Threads und zum Vermeiden aktiven Wartens. Beide wurden in einem Compiler implementiert, ihr Nutzen wurde anhand von Anwendungen belegt und sie wurden dem OpenMP-Sprachausschuss vorgeschlagen.ger
dcterms.accessRightsopen access
dcterms.creatorSuess, Michael
dc.contributor.corporatenameKassel, Universität, FB 16, Elektrotechnik/Informatik
dc.contributor.refereeLeopold, Claudia (Prof. Dr.)
dc.contributor.refereeChapman, Barbara (Prof. Dr.)
dc.subject.swdParallelverarbeitungger
dc.subject.swdProgrammierungger
dc.subject.swdOpenMPger
dc.date.examination2007-12-19


Dateien zu dieser Ressource

Thumbnail

Das Dokument erscheint in:

Zur Kurzanzeige