Dissertation
A User-Centric Perspective on Parallel Programming with Focus on OpenMP
Abstract
The 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.
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.
Der 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.
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.
Citation
@phdthesis{urn:nbn:de:hebis:34-2008011620017,
author={Suess, Michael},
title={A User-Centric Perspective on Parallel Programming with Focus on OpenMP},
school={Kassel, Universität, FB 16, Elektrotechnik/Informatik},
month={01},
year={2008}
}
0500 Oax 0501 Text $btxt$2rdacontent 0502 Computermedien $bc$2rdacarrier 1100 2008$n2008 1500 1/eng 2050 ##0##urn:nbn:de:hebis:34-2008011620017 3000 Suess, Michael 4000 A User-Centric Perspective on Parallel Programming with Focus on OpenMP / Suess, Michael 4030 4060 Online-Ressource 4085 ##0##=u http://nbn-resolving.de/urn:nbn:de:hebis:34-2008011620017=x R 4204 \$dDissertation 4170 5550 {{Parallelverarbeitung}} 5550 {{Programmierung}} 5550 {{OpenMP}} 7136 ##0##urn:nbn:de:hebis:34-2008011620017
2008-01-16T08:07:04Z 2008-01-16T08:07:04Z 2008-01-16T08:07:04Z urn:nbn:de:hebis:34-2008011620017 http://hdl.handle.net/123456789/2008011620017 2219156 bytes application/pdf eng Urheberrechtlich geschützt https://rightsstatements.org/page/InC/1.0/ parallelization parallel programming OpenMP AthenaMP parallel programming survey frequently made mistakes Parawiki programmer's checklist Thinking Parallel Weblog design patterns generic components generic locking synchronization patterns lock adapters scoped locking guard objects deadlocks lock hierarchies leveled locks dual-guards n-guards singletons data-parallel patterns task pools busy waiting thread cancellation 004 A User-Centric Perspective on Parallel Programming with Focus on OpenMP Dissertation The 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. Der 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. open access Suess, Michael Kassel, Universität, FB 16, Elektrotechnik/Informatik Leopold, Claudia (Prof. Dr.) Chapman, Barbara (Prof. Dr.) Parallelverarbeitung Programmierung OpenMP 2007-12-19
The following license files are associated with this item:
Urheberrechtlich geschützt
Related items
Showing items related by title, author, creator and subject.
-
Technischer Report
Süß, Michael; Podlich, Alexander; Leopold, Claudia (2007-05-08) -
Technischer Report
Süß, Michael; Leopold, Claudia (Universität Kassel, FB 16, Elektrotechnik/Informatik, 2005-12-20)