Volltext-Downloads (blau) und Frontdoor-Views (grau)
The search result changed since you submitted your search request. Documents might be displayed in a different sort order.
  • search hit 37 of 53
Back to Result List

Evaluation verschiedener Techniken zur Parallelisierung von Programmen anhand einer Beispielanwendung

  • Moderne Programme bewältigen immer komplexere und leistungsfordernde Aufgaben. Mit diesem Anstieg geht jedoch ein höherer Bedarf an Hardware-Ressourcen einher, insbesondere an höheren Prozessorkapazitäten. Diesem Trend wurde mit einer konstanten Erhöhung der Taktraten von Prozessoren begegnet. Doch seit 2005 wurde dieser Trend aufgrund von physikalischen Grenzen gebremst. Stattdessen installieren Prozessorhersteller nun mehrere Prozessorkerne mit geringerer Taktrate auf einem Prozessor. Dies führt auch zu neuen Programmiertechniken, die Programme auf mehreren Prozessorkernen verteilen. Sie stellen einen sicheren Datenzugriff, deterministische Ausführung und Leistungsverbesserungen sicher. Ursprünglich mussten Programmierer diese Techniken manuell programmieren, heute existieren Technologien, die eine solche Verwaltung automatisch durchführen. In dieser Thesis werden verschiedene High-Level Programmiertechniken anhand einer Beispielanwendung hinsichtlich ihrer Leistung, Ressourcenverwaltung und Bedienbarkeit verglichen. Die Beispielanwendung soll eine tatsächlich einsetzbare Anwendung repräsentieren, die grundlegende Probleme, wie voneinander unabhängige und abhängige Berechnungsschritte aufweist, weshalb eine Physiksimulation gewählt wurde. Die Parallelisierung wurde mit Goroutinen, Java Parallel Streams, Thread Pools und C++ async-Funktionen in ihrer jeweiligen Programmiersprache realisiert. Um die verschiedenen Parallelisierungstechniken zu vergleichen, wurden mehrere Merkmale der parallelen Implementierungen gemessen und mit einer sequentiellen Referenzimplementierung verglichen. Um die Leistung der Techniken zu messen, wurden die Ausführungszeiten der verschieden Simulationen gemessen und analysiert. Die Ressourcenverwaltung wurde anhand der Prozessorauslastung der verschiedenen Implementierungen verglichen. Um die Bedienbarkeit der verschiedenen Parallelisierungstechniken gegenüberzustellen, wurde die Anzahl der Quelltextzeilen ermittelt und in Relation gesetzt. Die Analyse dieser Daten zeigt die Unterschiede der Parallelisierungstechniken. Während die Implementierung unter Nutzung von Java Parallel Streams hohe Prozessorauslastung, und, verglichen mit den anderen Techniken, einen hohen Beschleunigungsfaktor sowie geringe Komplexität aufweist, kann die Implementierung mit Hilfe von C++ async-Funktion nicht mehrere Prozessorkerne auslasten und damit nicht die Vorteile von Parallelisierung ausnutzen. Die hohe Komplexität der Implementierung mit Goroutinen zahlt sich durch vergleichsweise geringe Ausführungszeiten trotz niedriger Prozessorauslastung aus.
  • Modern applications manage more complex and performance-demanding tasks than ever. But with more performance, applications also consume more hardware resources, especially CPU capacity. This demand was handled by constantly increasing the clock rate of CPUs. But since 2005, this trend was stopped due to physical limitations. Instead of increasing the performance of one CPU core, manufacturers put several cores with less clock frequency on one processor. This led to a new way of programming. Spreading a program across several CPU cores requires special programming techniques, ensuring safe data access and deterministic execution of programs, as well as performance gains. First, this techniques had to be handled manually by the programmer, but now, method exists, that manage the overhead of parallel programming. In this Thesis, an example applications is used to evaluate different high level parallel programming techniques according to their performance, their hardware management and their usability. The example application should represent a real world application with common problems like dependent and independent calculations. Therefore, a physic simulation was chosen. It was parallelized using Goroutines, Java Parallel Streams, Thread Pools and C++ async-functions in the respective programming language. To evaluate the different parallelization techniques, several characteristics of the implementations using them were measured and compared to a sequential reference implementation. To measure the performance, the execution times of the simulations were captured and interpreted. To measure the hardware management, the CPU utilization was analyzed. The complexity of the techniques was determined by comparing the number of lines of code of the implementations using the respective techniques. The analysis of these data showed differences between the parallelization techniques. While the implementation using Java Parallel Streams showed high CPU utilization and, in comparison to the other implementations, high speedup as well as low complexity, the implementation using C++ async-functions couldn't use the benefit of using multiple CPU cores at all. The high complexity of the implementation using Goroutines leads to relatively low execution times, despite its lower CPU utilization.

Export metadata

Additional Services

Search Google Scholar

Statistics

frontdoor_oas
Metadaten
Author:Benjamin Binder
URN:urn:nbn:de:bsz:900-opus4-39400
Referee:Patrick Bader
Advisor:Jens-Uwe Hahn
Document Type:Bachelor Thesis
Language:German
Year of Completion:2015
Granting Institution:Hochschule der Medien, FB 1: Druck und Medien
Date of final exam:2015/08/31
Release Date:2015/10/14
Tag:Parallelisierung, Threadpools, Goroutinen, Java Parallel Streams, C++ async
GND Keyword:Informatik , Datenverarbeitung
Institutes:FB 1: Druck und Medien
DDC classes:000 Allgemeines, Informatik, Informationswissenschaft / 000 Allgemeines, Wissenschaft / 004 Informatik
Licence (German):License LogoCreative Commons - Namensnennung, Nicht kommerziell, Keine Bearbeitung 3.0