Skip to main content
main-content

Über dieses Buch

Mit diesem Buch erhalten Sie einen Einblick in unterschiedliche Aspekte des Software Engineerings

Der Einsatz paralleler Hardware-Architekturen betrifft alle Software-Entwickler und- Entwicklerinnen: vom Supercomputer bis zum eingebetteten System werden Multi- und Manycore-Systeme eingesetzt. Die Herausforderungen an das Software Engineering sind vielfältig, wie dieses Buch zeigt. Zum einen ist wieder ein stärkeres Verständnis für die Hardware notwendig. Ohne eine skalierbare Partitionierung der Software und parallele Algorithmen bleibt die Rechenleistung ungenutzt. Zum anderen stehen neue Programmiersprachen im Vordergrund, die die Ausführung von parallelen Anweisungen ermöglichen.

Dieses Buch betrachtet unterschiedliche Aspekte beim Software Engineering paralleler Systeme und berücksichtigt dabei auch eingebettete Systeme (Embedded Systems). Es verbindet Theorie und praktische Anwendung und ist somit für Studierende und Anwender in der Praxis gleichermaßen geeignet. Durch die programmiersprachenunabhängige Darstellung der Algorithmen können sie leicht für die eigene Anwendung angepasst werden. Viele praktische Projekte erleichtern das Selbststudium und vertiefen das Gelernte.

Diese Inhalte behandelt das Buch über Software Engineering

In der Einleitung diskutiert Michael Uelschen diverse Anwendungsfälle und Herausforderungen paralleler Systeme. In der Folge beschäftigt er sich unter anderem mit den folgenden Themengebieten:

· Parallele Systeme

· Parallele Algorithmen

· CPU-Programmierung

· GPU-Programmierung

· Moderne und funktionale Programmiersprachen

· Parallele Programmierung und Projekte

Obwohl das Hauptaugenmerk des Buches auf dem Software Engineering paralleler Systeme liegt, schlägt der Autor immer wieder eine Brücke zu den eingebetteten Systemen. Er schafft so einen umfangreichen Einblick in die Grundlagen der Softwareentwicklung.

Inhaltsverzeichnis

Frontmatter

Kapitel 1. Einleitung

Zusammenfassung
Ist Multicore  nur ein neues Buzzword? Ist es eine Modeerscheinung in der Informatik, wie so manch andere Schlagwörter zuvor, die nach einiger Zeit verschwinden? Warum muss sich jemand für das Thema interessieren? Warum sollte ein Studierender der Informatik ein Modul über parallele Programmierung hören?
Michael Uelschen

Kapitel 2. Grundlagen

Zusammenfassung
Bevor in den nachfolgenden Kapiteln einzelne Algorithmen beschrieben und auf die Programmierung eingegangen wird, wiederholt dieses Kapitel einige Grundlagen bei der Analyse von Algorithmen und stellt Kriterien zur Beurteilung der Leistungsfähigkeit vor.
Michael Uelschen

Kapitel 3. Parallele Systeme

Zusammenfassung
Die Realisierung von parallelen Rechnersystemen erfolgt in verschiedenen Abstraktionsebenen. Nachfolgend werden diese vier Ebenen und die Möglichkeiten der Parallelisierungkurz vorgestellt. Es zeigt sich, dass durch die Vervielfachung von Recheneinheiten die Nutzung von gemeinsamem Speicher bei der Entwicklung paralleler Programme besonders betrachtet werden muss.
Michael Uelschen

Kapitel 4. Algorithmen

Zusammenfassung
Das folgende Kapitel beschreibt eine Auswahl klassischer, paralleler Algorithmen in einer sprachunabhängigen Darstellung. Neben einigen Basisverfahren werden Präfixsummen und Reduktionsalgorithmen vorgestellt, die sich kombinieren lassen und somit vielfältige und komplexe Aufgabenstellungen parallel bearbeiten. Durch ihren Aufbau sortieren Sortiernetzwerke entsprechend einer beliebigen Ordnung von sich aus parallel.
Michael Uelschen

Kapitel 5. CPU-Programmierung

Zusammenfassung
In den nächsten Abschnitten wird die Umsetzung der vorgestellten Konzepte und Algorithmen anhand von Programmierbeispielen verdeutlicht. Erfahrungen in der Programmierung mit C++ werden hierbei vorausgesetzt.
Michael Uelschen

Kapitel 6. GPU-Programmierung

Zusammenfassung
Neben den bisher vorgestellten parallelen Rechnerarchitekturen gibt es eine weitere Klasse, die im Gegensatz nach dem SIMD-Prinzip arbeitet. Das folgende Kapitel (siehe auch Uelschen (2010)) stellt diesen alternativen Ansatz auf Basis von Graphics Processing Unit  (GPU) vor. Dieser orientiert sich an den Architektur- und Programmiermodellen der Grafikkarten der Firma Nvidia.
Michael Uelschen

Kapitel 7. Moderne Programmiersprachen

Zusammenfassung
Die bisher vorgestellten Konzepte der parallelen Programmierung sind Erweiterungen sequenzieller, imperativer Programmiersprachen. Eine Vielzahl der Schwierigkeiten, beispielsweise Konfliktsituationen beim Zugriff auf gemeinsame Variablen, müssen durch den Entwickler identifiziert und explizit aufgelöst werden (beispielsweise durch die Verwendung von Sperren). Die Verifikation solcher Programme ist sehr aufwendig.
Michael Uelschen

Kapitel 8. Parallele Projekte

Zusammenfassung
Dieser Abschnitt beschreibt verschiedene Projektideen, um die in den vorherigen Kapiteln vorgestellten parallelen Konzepte, Algorithmen und Sprachen praktisch zu erproben. Die Aufgabenstellungen sind bewusst einfach gehalten, sodass die grundsätzlichen Mechanismen der Parallelisierung im Vordergrund stehen. Hierbei ist es interessant, eine Aufgabe auf unterschiedlichen Plattformen, beispielsweise auf der CPU und auf der GPU, oder mit unterschiedlichen Programmierparadigmen, imperativ oder funktional, zu bearbeiten. Hierbei gilt es dann die algorithmische Komplexität und die programmiertechnische Handhabung zu vergleichen und zu bewerten.
Michael Uelschen

Backmatter

Weitere Informationen

Premium Partner

    Bildnachweise