Differences

This shows you the differences between two versions of the page.

Link to this comparison view

teaching:hamburg:wintersemester_2012_2013:paralleles_programmieren_seminar [2019-01-04 18:02] (current)
Line 1: Line 1:
 +====== Projekt mit Seminar „Paralleles Programmieren“ ======
 +
 +===== Beschreibung =====
 +
 +Um bestehende Hochleistungsrechner oder Cluster zu programmieren gibt es verschiedene Konzepte.
 +Die bestehenden Modelle unterschieden sich in vielerlei Hinsicht, der Abstraktionsgrad von der bestehenden Hardware ist eines der entscheidenden Faktoren.
 +Daneben kann die Implementierung eines Modells ​ eine bestehende Programmiersprache erweitern, Bibliotheken bereitstellen,​ oder den Compiler erweitern.
 +Ein Modell zielt evtl. nur darauf ab Leistung für bestimmte Hardware-Architektur zur Verfügung zu stellen.
 +In der Praxis gibt es für jedes Modell eine Programmiersprachen die sich durchsetzte,​ jedoch werden auch in der Forschung viele neue Ansätze versucht.
 +
 +Die Veranstaltung teilt sich in zwei Bereiche, ein Seminar und ein Praxis-Teil in dem eine Anwendung erstellt und parallelisiert wird.
 +
 +Im Seminar werden von den Studierenden unterschiedliche Programmierkonzepte vorgestellt.
 +Bis zum Ende des Semesters wird in jeweils Kleingruppen die Parallelisierung vorgenommen und ihre Leistung evaluiert.
 +Hierbei dürfen auch verschiedene Sprachen verglichen werden.
 +Die Anwendung kann von der Gruppe ausgesucht werden, es stehen z.B. numerische Algorithmen und Simulationen als auch Löser für Brett- und Kartenspiele zur Verfügung Beispielhafte Themen sind unten.
 +
 +Die Veranstaltung wird voraussichtlich auf Englisch stattfinden,​ d.h. Seminar-Vorträge und die Ausarbeitungen zu den Projekten werden auf Englisch angefertigt,​ dies dient auch der Vorbereitung auf den wissenschaftlichen Alltag.
 +Mögliche Defizite in den Sprachkenntnissen werden von uns jedoch großzügig gehandhabt.
 +
 +Beachten Sie auch unsere allgemeinen organisatorischen [[:​teaching:​hamburg:​organisatorisches:​start#​projekte|Hinweise zu Projekten]].
 +
 +===== Zielgruppe =====
 +
 +Das Projekt mit Seminar eignet sich für Studierende der Informatik in den Diplom- und Masterstudiengängen.
 +Vorkenntnis von Hochleistungsrechnen ist von Vorteil, aber nicht Voraussetzung. ​
 +Studierende anderer Studiengänge müssen die Anrechnung mit dem jeweiligen Prüfungsausschuss klären.
 +
 +Zuhörer für das Seminar und auch Teilnehmer sind auch herzlich willkommen.
 +===== Daten der Veranstaltung =====
 +
 +|| Zeit || Mittwoch, 16--18 Uhr ||
 +|| Ort || [[http://​maps.google.com/​maps?​q=DKRZ,​+Bundesstra%C3%9Fe+45a,​+20146+Hamburg&​hl=de&​cd=2&​ei=BUxYS-GvKIuLOKaotbgJ&​sig2=Kv8CBjHeXm8lAVC3XxRrIQ&​ie=UTF8&​view=map&​cid=262423906154203330&​ved=0CBsQpQY&​hq=DKRZ,​+Bundesstra%C3%9Fe+45a,​+20146+Hamburg&​hnear=&​z=16&​iwloc=A|DKRZ]],​ Raum tbd ||
 +|| Beginn || 17.10.2012 ||
 +|| Vorbesprechung || 17.10.2012, 16 -- 18 Uhr ||
 +|| Sprache || Vorträge und Abschlussbericht in Englisch ||
 +|| Mailingliste || [[http://​wr.informatik.uni-hamburg.de/​listinfo/​paps-1213|PAPS-1213]] ||
 +
 +===== Dozenten =====
 +
 +  * [[about:​people:​julian kunkel]]
 +  * Thomas Ludwig
 +
 +
 +===== Themenliste =====
 +
 +==== Seminarthemen ====
 +  * Hardware: Rechnerarchitekturen und Speicheranbindung
 +    * Content Addressable Parallel Processor vs. Von Neumann Architektur vs. Datenfluss Architektur
 +    * Ebenen der Hardware Parallelität:​ bit-level, instruction level (superskalar),​ data, and task parallelism
 +    * Übersicht: SMP & NUMA, Vektorrechner (SSE), Cluster, BlueGene, GPU & Cell Prozessor
 +  * Software: Übersicht über Programmierparadigmen und Modelle
 +    * Entwicklung von parallelen Programmen
 +    * Programmiersprachen vs. Bibliotheken,​ Automatische Methoden & Spracherweiterungen
 +    * Paradigmen/​Modelle
 +      * Task-farming,​ Task-parallelismus,​ Datenaufteilung (Domain-decomposition) - SPMD, Pipeline, Streaming, Divide & Conquer, Map-reduce, Spekulativ
 +  * PGAS - Partitioned Global Adress Space 
 +    * Unified Parallel C
 +    * Global Array Library SHMEM
 +  * Fresh Breeze Architektur & Programmiermodell
 +  * Map-Reduce
 +    * Hadoop
 +  * OpenCL, GPGPU & Stream Computing
 +  * Vektorprogrammierung (beeinhaltet SSE)
 +  * Intel Thread Building Blocks
 +    * Parallel Programming with .NET -- Task Parallel Library
 +  * Programmiersprachen:​ Cilk++, Fortress, Erlang
 +  * Message Passing Interface (MPI)
 +  * Shared Memory: Threads + OpenMP, Virtual Shared Memory
 +  * High Performance Fortran & Co-Array Fortran
 +  * Futures & Promises
 +    * Futures in Python & C++
 +  * Parallel Python
 +==== Projektvorschläge ====
 +  * Räumliches Räuber/​Beute System
 +  * [[http://​de.wikipedia.org/​wiki/​Mastermind|Löser für Super Mastermind]]
 +  * Straßennetz und Autofahrer mit kürzesten Wegen
 +  * Paralleles Indizieren & Suche von Daten
 +  * ... [Eigene Ideen?] ...
 +===== Zeitplan und Materialien =====
 +
 +Nach der Festlegung des Themas für die Anwendung soll ein Projektplan erstellt und mit dem Betreuer diskutiert werden.
 +Im Rahmen eines Treffens wird jedes Team den Projektplan und Inhalte in einer Kick-Off-Präsentation skizzieren.
 +Ende WiSe-2012/​13 wird das Projekt abgeschlossen und die Resultate werden vorgestellt.
 +
 +Projektthemen:​
 +  *  **Go-Wrapper für MPI** -- //Johann Weging & Alexander Beifuß//
 +  *  **Räumliches Räuber/​Beute System** -- //Eugen Betke & Zhiyu Huang//
 +
 +Seminarthemen:​
 +  *  9. 1. 2013 **Shared Memory: Threads & OpenMP, Virtual Shared Memory** -- //Eugen Betke//
 +  *  16. 1. 2013 **MPI and MPI-3.0** -- //Johann Weging//
 +  *  23. 1. 2013 **Go und Concurrency** -- //Alexander Beifuß//
 +
 +Die Ergebnisse des Seminars wurden auf folgender Seite veröffentlicht:​ [[teaching:​hamburg:​sommersemester_2013:​parallele_programmierung|PAPO]]
 +
 +===== Literaturhinweise =====
 +  * [[http://​kbs.cs.tu-berlin.de/​ivs/​Lehre/​SS04/​VS/​Gruppe3-%20P_Modelle.pdf|Parallele Programmiermodelle und Paradigmen]]
 +  * Experiments with the Fresh Breeze Tree-Based Memory Model, Jack B. Dennis · Guang R. Gao · Xiao X. Meng
 +  * [[http://​www.cse.ohio-state.edu/​~panda/​788/​slides/​3g_3j_ga_armci_upc_x10_wi10.pdf|PGAS Programming models]]
 +  * The Fresh Breeze Model of Thread Execution
 +  * Fresh Breeze: A Multiprocessor Chip Architecture Guided by Modular Programming
 +  * http://​en.wikipedia.org/​wiki/​Programming_paradigm
 +  * http://​en.wikipedia.org/​wiki/​Parallel_computing
 +  * http://​de.wikipedia.org/​wiki/​Datenfluss-Architektur
 +  * [[http://​s08.idav.ucdavis.edu/​owens-parallel-prog-models-overview.pdf|Parallel Programming Models Overview]]
 +  * [[http://​www.springerlink.com/​index/​j4q8v19047303187.pdf|Parallele Programmiermodelle]]
 +  * [[http://​www-ti.informatik.uni-tuebingen.de/​~c6/​Proseminar-SS3/​Proseminar_AndreasJusten.doc|Parallele Programmiermodelle]]
 +  * http://​de.wikipedia.org/​wiki/​Explicitly_Parallel_Instruction_Computing
 +  * http://​en.wikipedia.org/​wiki/​Futures_and_promises
 +  * http://​en.wikipedia.org/​wiki/​Parallel_programming_model
 +  * http://​en.wikipedia.org/​wiki/​Algorithmic_skeleton
 +  * http://​threadingbuildingblocks.org/​
 +  * http://​en.wikipedia.org/​wiki/​High_Performance_Fortran
 +  * [[http://​pvs.uni-muenster.de/​pvs/​lehre/​SS10/​seminar/​seminar-pp.pdf|Parallele Programmiersprachen]]
 +  * [[http://​www.parallelpython.com/​|Parallel Python]]
 +  * http://​www.linuxjournal.com/​content/​introduction-gcc-compiler-intrinsics-vector-processing