Parallelprogrammierung und Rechnerarchitekturen
PDF Lehrveranstaltungsverzeichnis English Version: PPRA
Version: 3 | Letzte Änderung: 29.04.2022 08:41 | Entwurf: 2 | Status: Entwurf
Langname | Parallelprogrammierung und Rechnerarchitekturen |
---|---|
Anerkennende LModule | PPRA_BaTIN |
Verantwortlich |
Prof. Dr. Lothar Thieling
Professor Fakultät IME |
Gültig ab | Sommersemester 2021 |
Niveau | Bachelor |
Semester im Jahr | Sommersemester |
Dauer | Semester |
Stunden im Selbststudium | 60 |
ECTS | 5 |
Dozenten |
Lehrbeauftragte(r) / Thieling
|
Voraussetzungen | grundlegende prozedurale Programmierkenntnisse Grundkenntnisse in Multitasking-Programmierung Grundlegende Funktionsweise eines Von-Neumann-Rechners Grundlagen der Digitaltechnik (Automaten, Hardware-Beschreibungssprache) |
Unterrichtssprache | deutsch |
separate Abschlussprüfung | Ja |
Barlas, Gerassimos: Multicore and GPU Programming: An Integrated Approach |
Tanenbaum, Goodman: Computerarchitektur, Pearson Studium (Prentice Hall) |
Pacheco: Parallel Programming with MPI |
Eijkhout: Introduction to High Performance Computing |
Details | Die Studierenden sollen in einer schriftlichen Klausur folgende Kompetenzen nachweisen: 1.) Sicherer Umgang mit grundlegenden Begrifflichkeiten, Mechanismes und Konzepten. 2.) Parallelprogrammierung unter Verwendung gängiger Entwurfwerkzeuge (z.B. MPI und CUDA). 3.) Entwicklung von Problemlösungen, die prädestiniert sind für den Einsatz von Parallelrechnersystemen. |
---|---|
Mindeststandard | Mindestens 50% der möglichen Gesamtpunktzahl. |
Prüfungstyp | Klausur |
Zieltyp | Beschreibung |
---|---|
Kenntnisse | Grundlagen der Parallelprogrammierung Einleitung Ansatz/Grundidee Datenabhängigkeiten und Synchronisierung Parallele Computerarchitekturen Klassifikation MMID SIMD |
Kenntnisse | Design paralleler Programme Entwicklungsprozeß Dekomposition Muster Vollständig parallel Task Parallelität (inkl. Task Pool) Devide and Conquer Pipeline (bzw. allgemeiner Task Graph) Data Parallel (Geometric Data) Recursive Data |
Kenntnisse | Design paralleler Programme Programm Struktur Muster zur Parallelprogrammierung Master Slave (Master Worker) Fork and Join Singe Program Multiple Data (SPMD) Multiple Program Multiple Data (MPMD) Map-Reduce Loop Parallelism Zuordnung von Programm Struktur Mustern zu Dekompositions-Muster |
Kenntnisse | Design paralleler Programme Metriken zur Leistungsbestimmung (Performance Metrics) Speedup Amdahl’s Gesetz Effizienz Skalierbarkeit Leistungseinbuße Lastausgleich (Load Balancing) Messung der Leistung (Performance) |
Kenntnisse | Einordnung von Standardbibliotheken hinsichtlich der vorangestellten Designmöglichkeiten und deren Nutzung auf Basis von Design-Pattern MPI (distributed memory) CUDA (GPU-Programming) |
Kenntnisse | Rechnerarchitekturen (gem. Von-Neumann) Konzeptionelle Komponenten zur Leistungssteigerung bzgl. ... Speicher Processing Units GPU (s.o.) Kommunikation Protection |
Kenntnisse | Implementierung der vorangestellten Konzepten in konkreten Rechnerarchitekturen IA32e (AMD64) ARM |
Kenntnisse | Nicht-Von-Neuman-Architekturen Anbindung von FPGAs an Von-Neumann-Architekturen Neuronale Netze implementiert in FPGAs |
Fertigkeiten | Die Studierenden sind in der Lage, - den Aufbau, die Organisation und das Operationsprinzip von Rechnersystemen zu erörtern, - den Zusammenhang zwischen Hardware-Konzepten und den Auswirkungen auf die Software zu analysieren, um effiziente Programme erstellen zu können, - aus dem Verständnis über die Wechselwirkungen von Technologie, Rechnerkonzepten und Anwendungen die grundlegenden Prinzipien des Entwurfs nachzuvollziehen und anzuwenden, - Rechnerkonzepte zu bewerten und zu vergleichen. |
Fertigkeiten | Die Studierenden sind in der Lage, - Architekturmerkmale von Parallelrechner zu beschreiben, - Parallelrechner, Programmierparadigmen und Designpattern zu bewerten und bezüglich einer Anwendung auszuwählen, - Parallelrechner zu programmieren |
Fertigkeiten | Systemverhalten aus spezifizierenden Texten herleiten technische Texte erfassen implizite Angaben erkennen und verstehen fehlende Angaben erkennen ableiten erfragen |
Typ | Präsenzzeit (h/Wo.) |
---|---|
Vorlesung | 2 |
Übungen (ganzer Kurs) | 1 |
Übungen (geteilter Kurs) | 1 |
Tutorium (freiwillig) | 0 |
keine |
Begleitmaterial |
elektronische Vortragsfolien zur Vorlesung , elektronische Übungsaufgabensammlung , elektronische Software-Entwicklungsumgebung zum Compilieren, Linken, Debuggen, Simulieren, elektronische Sammlung von Beispiel-Programmen |
---|---|
Separate Prüfung | Nein |
Zieltyp | Beschreibung |
---|---|
Fertigkeiten | siehe Fertigkeiten, die unter "Vorlesung/Übung->Lernziele->Fertigkeiten" aufgeführt sind |
Fertigkeiten | zielgerichtetes Handhaben der Software-Entwicklungsumgebungen |
Fertigkeiten | komplexere Aufgaben in einem Kleinteam bewältigen |
Fertigkeiten | Erarbeitung von komplexeren Problemlösungen aus mindestens einem Bereich der rechen/datanintensiven Algorithmen, der Signalverarbeitung, der Künstlichen Intelligenz oder der Grafischen Animation, die pädestiniert sind für den Einsatz von Parallelrechnern. |
Typ | Präsenzzeit (h/Wo.) |
---|---|
Praktikum | 1 |
Tutorium (freiwillig) | 0 |
keine |
Begleitmaterial |
elektronische Aufgabenstellung (Problembeschreibung) , elektronische Software-Entwicklungsumgebung zum Compilieren, Linken, Debuggen, Simulieren , elektronische Sammlung von Beispiel-Programmen , elektronische Tutorials für Selbststudium Handhabung der Entwicklungsumgebung |
---|---|
Separate Prüfung | Nein |
© 2022 Technische Hochschule Köln