# Parallele Programmierung

**Winter**


(engl. Parallel Programming )

<table bgcolor="#7FB3D9" border="1" id="bkmrk-%5Btitle%5D" style="width: 100%; border-collapse: collapse; border-width: 1px; border-style: none;"><colgroup><col style="width: 100%;"></col></colgroup><tbody><tr style="background-color: rgb(235, 243, 249);"><td>##### <span style="color: rgb(0, 104, 180);">**Modulnummer: FIN-INF-110463** </span>

</td></tr></tbody></table>

<table bgcolor="#7FB3D9" border="1" id="bkmrk-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 14.2515%;"></col><col style="width: 14.2515%;"></col><col style="width: 13.061%;"></col><col style="width: 15.442%;"></col><col style="width: 14.2515%;"></col><col style="width: 14.2515%;"></col><col style="width: 14.2515%;"></col></colgroup><tbody><tr><td class="align-center" style="border: 5px solid rgb(255, 255, 255);"><span style="color: rgb(61, 61, 61);">**Kürzel**</span>

<span style="color: rgb(61, 61, 61);">PP </span>

</td><td class="align-center" style="border: 5px solid rgb(255, 255, 255);"><span style="color: rgb(61, 61, 61);">**CP**</span>

<span style="color: rgb(61, 61, 61);">5 </span>

</td><td class="align-center" style="border: 5px solid rgb(255, 255, 255);"><span style="color: rgb(61, 61, 61);">**Semester**</span>

<span style="color: rgb(61, 61, 61);">Winter </span>

</td><td class="align-center" style="border: 5px solid rgb(255, 255, 255);"><span style="color: rgb(61, 61, 61);">**Fachsem.**</span>

<span style="color: #3d3d3d;">ab 3. </span>

</td><td class="align-center" style="border: 5px solid rgb(255, 255, 255);">**<span style="color: rgb(61, 61, 61);">Dauer</span>**

<span style="color: rgb(61, 61, 61);">1 Semester </span>

</td><td class="align-center" style="border: 5px solid rgb(255, 255, 255);"><span style="color: rgb(61, 61, 61);">**Sprache**</span>

<span style="color: rgb(61, 61, 61);">deutsch</span>

</td><td class="align-center" style="border: 5px solid rgb(255, 255, 255);"><span style="color: rgb(61, 61, 61);">**Niveau**</span>

<span style="color: rgb(61, 61, 61);">Bachelor </span>

</td></tr></tbody></table>

<table border="1" id="bkmrk-verantwortung%3A-verwe" style="border-collapse: collapse; width: 100%; height: 89.3907px; border-width: 1px; border-style: none;"><colgroup><col style="width: 20.2601%;"></col><col style="width: 79.7399%;"></col></colgroup><tbody><tr><td>**Link zum LSF:**</td><td>[ LSF](https://lsf.ovgu.de/qislsf/rds?state=wsearchv&search=1&subdir=veranstaltung&veranstaltung.semester=20262&veranstaltung.dtxt=Parallele+Programmierung&P_start=0&P_anzahl=30&P.sort=veranstaltung.dtxt&_form=display "Parallele Programmierung")</td></tr><tr><td>**Zugang beschränkt:**</td><td></td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Verantwortung:**</td><td style="height: 29.7969px;">Prof. Dr. Michael Kuhn </td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Dozent:in:**</td><td style="height: 29.7969px;">Prof. Dr. Michael Kuhn </td></tr><tr><td>**Lehrveranstaltungen:**</td><td>- Vorlesung *Parallele Programmierung*
- Übung *Parallele Programmierung*

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Verwendbarkeit:**</td><td style="height: 29.7969px;">- B.Sc. INF: Informatik - Wahlpflicht  
- B.Sc. INF: Studienprofil: Computer Games  
- B.Sc. INF: Informatik Wahlpflicht (SPO 2027)  
- B.Sc. CV: Informatik - Wahlpflicht  
- B.Sc. CV: Anwendungsfach - Computer Games  
- B.Sc. CV: Computervisualistik Wahlpflicht (SPO 2027)  
- B.Sc. INGINF: Informatik - Wahlpflicht  
- B.Sc. INGINF: Informatik Wahlpflicht (SPO 2027)  
- B.Sc. WIF: Gestalten und Anwenden - Wahlpflicht  
- B.Sc. WIF: Informatik Wahlpflicht (SPO 2027)  
- B.Sc. INF (bilingual): Informatik - Wahlpflicht  
- B.Sc. INF (bilingual): Informatik Wahlpflicht (SPO 2027)  
  
</td></tr></tbody></table>

**Angestrebte Lernergebnisse:** Die Teilnehmenden...

- verstehen Hardwarearchitekturen von Parallelrechnern
- optimieren Anwendungen bezüglich ihrer Leistungsfähigkeit
- verstehen wichtige Konzepte zur Parallelisierung von Anwendungen
- erstellen parallele Programme mit verschiedenen Programmieransätzen in kleineren Teams
- präsentieren Lösungsansätze und Ergebnisse anderen Teilnehmenden

  
**Inhalt:** Die parallele Programmierung gewinnt immer mehr an Bedeutung, da heutzutage bereits Mobiltelefone und Laptops über mehrere Prozessorkerne verfügen. Supercomputer besitzen teilweise sogar mehrere Millionen Kerne und haben sich als ein nützliches und mittlerweile unverzichtbares Werkzeug für viele Wissenschaftsbereiche etabliert. Die dadurch möglichen Analysen und Simulationen haben es erlaubt, den wissenschaftlichen Erkenntnisgewinn in vielen Bereichen deutlich zu steigern. Die optimale Nutzung dieser Komponenten ist allerdings keine einfache Aufgabe, weshalb Wissenschaftlerinnen und Wissenschaftler bei der Entwicklung effizienter Anwendungen vor immer neue Herausforderungen gestellt werden. Für die parallele Programmierung ist daher ein tiefergehendes Verständnis der Hard- und Softwareumgebung sowie möglicher Fehlerursachen unabdingbar. In der Vorlesung werden die Grundlagen der parallelen Programmierung gelehrt; die Übungen dienen der praktischen Anwendung und Umsetzung der erworbenen Kenntnisse in der Programmiersprache C. Im Rahmen der Vorlesung werden einige der wichtigsten Themengebiete betrachtet: Hard- und Softwarekonzepte (Mehrkernprozessoren, Prozesse/Threads, NUMA etc.), unterschiedliche Ansätze zur parallelen Programmierung (OpenMP, POSIX Threads, MPI) sowie Werkzeuge zur Leistungsanalyse und Fehlersuche (Skalierbarkeit, Deadlocks, Race Conditions etc.). Zusätzlich werden Gründe und Lösungsansätze für Leistungsprobleme diskutiert und alternative Ansätze für die parallele Programmierung vorgestellt. Beispiele und Probleme werden anhand realer wissenschaftlicher Anwendungen veranschaulicht.

**Arbeitsaufwand:**

- 56h Präsenz
- 94h selbstständiges Arbeiten

  
<table border="1" id="bkmrk-studien-%2Fpr%C3%BCfungslei" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 32.6591%;"></col><col style="width: 35.9941%;"></col><col style="width: 31.3468%;"></col></colgroup><tbody><tr><td>**Prüfungsvorleistungen:**</td><td>**Studien-/Prüfungsleistungen:**</td><td>**Lehrform / SWS:**</td></tr><tr><td style="vertical-align: top;">- Aktive und erfolgreiche Teilnahme an den Übungen

</td><td class="align-left" style="vertical-align: top;">Klausur (120 Minuten)

</td><td class="align-left" style="vertical-align: top;">- Vorlesung (2 SWS)
- Übung (2 SWS)

  
</td></tr></tbody></table>

<table border="1" id="bkmrk-voraussetzungen-nach" style="font-family: var(--font-body); font-size: 14px; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>**Voraussetzungen nach Prüfungsordnung:**</td><td>**Empfohlene Voraussetzungen:**</td></tr><tr><td class="align-left" style="vertical-align: top;">keine

</td><td class="align-left" style="vertical-align: top;">- Praktische Kenntnis einer Programmiersprache und die Fähigkeit, einfache Programme zu erstellen
- Grundkenntnisse in Betriebssystemen und Rechnerarchitekturen (z. B. Technische Informatik)

  
</td></tr></tbody></table>

<table border="1" id="bkmrk-medienformen%3A-litera" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>**Medienformen:**</td><td>**Literatur:**</td></tr><tr><td class="align-left" style="vertical-align: top;"></td><td class="align-left" style="vertical-align: top;">- High Performance Computing: Modern Systems and Practices (Thomas Sterling, Matthew Anderson und Maciej Brodowicz)

  
</td></tr></tbody></table>

**Hinweise:**