Winter semester 2022/2023

The content on this page was translated automatically.

The entire organization of the courses takes place via the Moodle learning platform. If you would like to take part in one of the courses listed below, please register for the relevant Moodle course.

The course begins with an introduction to the subject matter, areas of application and basic concepts of parallel computing. We cover design techniques for parallel algorithms (e.g. parallel divide-and-conquer) as well as general requirements for the design of efficient programs (e.g. cache optimization).

Basic knowledge of parallel programming is then taught in the main part using three exemplary programming systems:

  • OpenMP for computers with shared memory,
  • OpenMP Offloading for GPUs and
  • "APGAS for Java" for computers with distributed and hybrid memory.

Two practical sections are integrated into the course, in which the participants solve programming tasks in teams of two. The results are then presented in examination discussions and form the basis for the assessment of the course.

The course replaces the previous courses PV1 and PV2.

Study program
Bachelor of Computer Science

Scope
4 SWS (6 credits)

 

Further information, including the lecture dates, can be found in the course catalog and in the Moodle course. If you have any questions, Dr. Jonas Posner and M.Sc. Lukas Reitz will be happy to answer them.

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 binary forking model and the parallel random access machine model. We 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 may be covered: fault-tolerant parallel algorithms and efficient algorithms for memory hierarchies.

The course is assessed on the basis of a project with a final examination. 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.

Study program
Master Computer Science

Scope
4 SWS (6 credits)

 

Further information, including the lecture dates, can be found in the course catalog and in the Moodle course. If you have any questions, Prof. Dr. Claudia Fohry and M.Sc. Rüdiger Nather will be happy to answer them.

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. Some more complex synchronization problems will also 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 the Partitioned Global Address Space (PGAS) and the Asynchronous Many-Task programming AMT. Individual languages are learned and tested, e.g. Cilk, Chapel, 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.

Study program
Master Computer Science

Scope
4 SWS (6 credits)

 

Further information, including the lecture dates, can be found in the course catalog and in the Moodle course. If you have any questions, Prof. Dr. Claudia Fohry, Dr. Jonas Posner and M.Sc. Rüdiger Nather will be happy to answer them.

High Performance Computing (HPC) systems, also known as supercomputers, make it possible to solve complex problems in various scientific fields. Traditionally, supercomputers consist of many networked computing nodes on which computationally intensive applications (e.g. simulations) are executed. In recent years, the performance of these supercomputers has increased dramatically and more and more specialized hardware such as FPGAs is being used. At the same time, the applications running on supercomputers are becoming more diverse and areas such as data analysis and artificial intelligence are becoming increasingly important.

In this seminar we will look at the current status and trends in HPC. Participants will each present a topic to be explored from the literature. Example topics include traditional programming languages (e.g. MPI, OpenMP), newer programming languages (e.g. Julia, Chapel), job schedulers (e.g. Slurm, Torque), distributed file systems (e.g. BeeGFS, Lustre), and hardware accelerators (e.g. GPU, FPGA). Participants can make suggestions for their own topics by arrangement.

Study program
Bachelor/Master Computer Science

Scope
Bachelor 2 SWS (3/4 credits)
Master 2 SWS (4 credits)

 

Further information, including the seminar dates, can be found in the Bachelor's coursecatalog/Master's course catalog and in the Moodle course. If you have any further questions, Dr. Jonas Posner and M.Sc. Lukas Reitz will be happy to answer them.

While algorithm design and analysis are traditionally based on abstract calculation models such as the random access machine and asymptotic runtime estimation using O-notation, algorithm engineering also relies on the implementation and experimental evaluation of the algorithms. In this way, practical factors influencing the runtime can be appropriately taken into account and the algorithms can be adapted to real application scenarios. The influencing factors include hardware aspects such as caches, disk storage and branch prediction, the simplicity of the algorithms, their implementation using the programming language and the fit to typical inputs.

In the seminar, examples of the improvement of specific algorithms through algorithm engineering, techniques for the systematic experimental evaluation of algorithms, calculation models with a stronger focus on hardware and libraries of efficient algorithms will be presented. Each participant works on a topic from the literature, typically from a scientific conference or journal article, and presents this in a lecture and a written paper.

Study program
Bachelor/Master Computer Science

Scope
Bachelor/Master 2 SWS (4 credits)

 

Further information, including the lecture dates, can be found in the Bachelor's/Master'scourse catalog and in the Moodle course. If you have any questions, Prof. Dr. Claudia Fohry and M.Sc. Rüdiger Nather will be happy to answer them.

In this project, students work in small groups to independently implement two to three given tasks in the field of parallel programming. These tasks are the same for all groups, but each group uses a different parallel programming system. There are various systems to choose from, for example Legion, Chapel, Julia and CompsS. The requirements include the theoretical development of a parallel algorithm, implementation and testing on the cluster at the University of Kassel. At the end, all groups present their results and experiences, which are then discussed.

Study program
Bachelor/Master Computer Science

Scope
Bachelor 8 SWS (12 credits)
Master 4 SWS (8 credits)

 

Further information, including the lecture dates, can be found in the Bachelor's/Master'scourse catalog and in the Moodle course. If you have any questions, Prof. Dr. Claudia Fohry, Mr. M.Sc. Lukas Reitz and Mr. M.Sc. Rüdiger Nather will be happy to answer them.