Winter semester 2019/2020

The content on this page was translated automatically.

Parallel programming

The course initially covers the established programming systems OpenMP and MPI in greater depth than in the Bachelor's program. The focus will be on advanced language constructs such as OpenMP tasks, MPI communicators and hybrid MPI/OpenMP programming. We discuss the use of the constructs using example applications. The focus is on the design goals of performance and scalability. In addition, some more complex synchronization problems will be discussed.

In the second part of the course, current parallel programming systems will be presented and compared with established systems. Typical approaches of these systems are Partitioned Global Address Space (PGAS) and Task-based Parallel Programming (TaPP). Individual languages are learned and tested, e.g. Chapel, TBB, HPX and Charm++. We also discuss cross-cutting topics such as design patterns, fault tolerance and elasticity.

Previous knowledge of parallel processing 1 and 2 is an advantage, but not essential. The course is divided into a lecture and a practical part. The practical part includes the development of programs with the programming systems covered. You will typically work in teams of two during the internship. The work placement, together with a final discussion, forms the basis for the assessment of the course.

 

Participants:

Students in the Master of Computer Science according to PO 2010 or 2018. For students after PO 2018, the course can be included in the compulsory elective area as well as in the specializations Software Development (as a compulsory course) and Environmental Informatics (as a compulsory elective course).

 

Course times:

  • Monday, 12:15 - 13:45, Room 2307A

  • Friday, 10:15 - 11:45 a.m., Room 2307A

The first event will take place on Friday, 18.10.2019.

 

Lecturer:

Prof. Dr. Claudia Fohry

 

All further information on the course can be found in Moodle.

Parallel algorithms

The course deals with a selection of parallel algorithms for different problems and architecture classes. First, we will learn basic design techniques and runtime estimation techniques using the Parallel Random Access Machine model. We will then look at algorithms for multi-core processors and clusters that can be implemented using OpenMP or MPI. Depending on the prior knowledge and interest of the participants, the implementation is also part of the course. The algorithms considered range from regular algorithms for matrix calculations to parallel optimization methods and parallel graph algorithms. Finally, algorithms for special scenarios are covered: fault-tolerant parallel algorithms and efficient algorithms for memory hierarchies.


The course is assessed on the basis of project work with a final examination discussion. The focus of the project is the development of efficient algorithms. These are analyzed with regard to their runtime and, if the participants have the relevant prior knowledge, implemented and evaluated experimentally.


The course complements the courses "Introduction to Parallel Processing" (Bachelor) and "Parallel Programming" (Master), but can also be taken without prior knowledge of parallel programming.


Participants:
Students in the Master of Computer Science according to PO 2010 or 2018. For students after PO 2018, the course can be included in the compulsory elective area as well as in the specializations Software Development (as a compulsory course) and Environmental Informatics (as a compulsory elective course).


Dates:

Wednesday 8:30 - 10:00 am in room 2307A
Thursday 08:30 - 10:00 am in room 2307A
The first lecture will take place on 18.04.19.


Scope:
Master 4 SWS (6 CP)


For further information please contact Prof. Dr. Claudia Fohry (fohry@uni-kassel.de)

Seminar - Java Concurrency

Nowadays, modern applications use concurrency so that they can execute several operations in parallel on multi-core processors. This allows, for example, the user interface, calculations and network communication to be executed in parallel. Different challenges arise depending on the requirements of the application.


Java has supported concurrent programming since version 5.0 with high-level concurrency APIs from the java.util.concurrent package. In the seminar, participants will be introduced to different types of concurrent programming using the current Java version. They will learn the functionalities from the literature, supplemented by examples with their own programs. Example topics include executors, callable and futures, phaser, fork/join framework, parallel streams, concurrent data structures and synchronization. Participants can make suggestions by arrangement.


Participants:

Students in the Master of Computer Science according to PO 2010 or 2018. For students after PO 2018, the course can be included in the compulsory elective area as well as in the specializations Software Development (as a compulsory course) and Environmental Informatics (as a compulsory elective course).


Dates:

Monday, 21.10.2019 from 10:15 - 11:00 am in room 2307A of the department

Lecturer:

Prof. Dr. Claudia Fohry and M.Sc. Jonas Posner

 

All further information about the event can be found in Moodle.