Winter semester 2019/2020

The content on this page was translated automatically.

Parallel programming

The course first covers the established programming systems OpenMP and MPI in greater depth than in the bachelor's program. Emphasis will be placed on advanced language constructs such as OpenMP tasks, MPI communicators, and hybrid MPI/OpenMP programming. We will discuss the use of these 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 will be learned and tested, e.g. Chapel, TBB, HPX and Charm++. In addition, we discuss cross-cutting topics such as design patterns, fault tolerance, and elasticity.

To attend the course, prior knowledge of Parallel Processing 1 and 2 is an advantage, but not mandatory. The course is divided into a lecture and a practical part. The practical part includes the development of programs with the discussed programming systems. During the internship you will typically work in teams of two. The practical course, together with a final discussion, forms the basis for the assessment of the course.

 

Participant group:

Students in the Master of Computer Science after PO 2010 or 2018. For students after PO 2018, the course can be included in the elective as well as in the concentrations Software Development (as a required course) and Environmental Informatics (as an elective).

 

Event times:

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

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

The first event will be held on Friday, 10/18/2019.

 

Lecturer:

Prof. Dr. Claudia Fohry

 

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

Parallel algorithms

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


The course is evaluated on the basis of a project paper with a final exam discussion. The main focus of the project is the own development of efficient algorithms. These algorithms are analyzed with respect to their runtime and, if the participants have the necessary 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 in parallel programming.


Audience:
Students in the Master of Computer Science after PO 2010 or 2018. For students after PO 2018, the course can be included in the elective as well as in the concentrations Software Development (as a required course) and Environmental Informatics (as an elective).


Dates:

Wednesday 8:30 - 10:00 am in room 2307A
Thursday 08:30 - 10:00 am in room 2307A
The first lecture will be held on 04/18/19.


Scope:
Master 4 SWS (6 CP)


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

Seminar - Java Concurrency

Modern applications nowadays use concurrency so that they can execute multiple operations in parallel on multi-core processors. This allows, for example, user interface, calculations and network communication to be executed in parallel. Depending on the requirements of the application, different challenges arise.


Java supports concurrent programming since version 5.0 with high-level concurrency APIs from the package java.util.concurrent. In the seminar, the participants introduce different types of concurrent programming with the help of the current Java version. They will learn the functionalities from the literature, supplemented by examples with their own programs. Example topics include executors, callables and futures, phasers, fork/join frameworks, parallel streams, concurrent data structures and synchronization. Participants may make suggestions by arrangement.


Participant group:

Students in the Master of Computer Science after PO 2010 or 2018. For students after PO 2018, the course can be included in the elective as well as in the concentrations Software Development (as a required course) and Environmental Informatics (as an elective).


Dates:

Monday, 10/21/2019 from 10:15 - 11:00 a.m. 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.