Winter semester 2022/2023

The content on this page was translated automatically.

The entire organization of the courses is done via the learning platform Moodle. If you would like to participate in one of the events listed below, please register in the corresponding Moodle course.

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

Using three exemplary programming systems, basic knowledge of parallel programming is then taught in the main part:

  • OpenMP for shared memory computers,
  • 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.

Course
Bachelor Computer Science

Scope
4 SWS (6 credits)

 

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

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 Binary Forking Model and 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, the implementation is also part of the course. The considered algorithms range from regular algorithms for matrix computations over parallel optimization methods up to parallel graph algorithms. Finally, algorithms for special scenarios may be covered: fault-tolerant parallel algorithms as well as efficient algorithms for memory hierarchies.

The course will be evaluated on the basis of a project paper with a final examination 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.

Course
Master Computer Science

Scope
4 SWS (6 credits)

 

Further information, including 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 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 Asynchronous Many-Task Programming AMT. Individual languages will be learned and tested, e.g. Cilk, Chapel, 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 programming systems covered. In the practical course you will typically work in teams of two. The internship, together with a final discussion, forms the basis for the evaluation of the course.

Course
Master Computer Science

Scope
4 SWS (6 credits)

 

For more information, including lecture dates, see the course catalog and 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 called supercomputers, enable the solution of complex problems from 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 analytics and artificial intelligence are becoming more important.

In this seminar, we will look at the current state and trends in HPC. Participants will each present a topic to be developed from the literature. Sample 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). The participants can make suggestions for their own topics after consultation.

Course
Bachelor/Master Computer Science

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

 

Further information, including seminar dates, can be found in the Bachelor's CourseCatalog/Master 's Course Catalog and in the Moodle Course. If you still have questions, Dr. Jonas Posner and M.Sc. Lukas Reitz will be happy to answer them.

While algorithm design and analysis traditionally refer to abstract computational models such as the Random Access Machine and an asymptotic runtime estimation using O-notation, algorithm engineering additionally relies on the implementation and experimental evaluation of the algorithms. This allows practical factors influencing runtime to be adequately considered and algorithms to be adapted to real-world deployment scenarios. Among the influencing factors are hardware aspects such as caches, disk memory and branch prediction, the simplicity of the algorithms, their implementation by means of the programming language and the fit to typical inputs.

In the seminar, the improvement of concrete algorithms by algorithm engineering; techniques for systematic experimental evaluation of algorithms, computational models with stronger hardware reference, and libraries of efficient algorithms are presented as examples. Each participant develops a topic from the literature, typically from a scientific conference or journal paper, and presents it in a talk and a written paper.

Course
Bachelor/Master Computer Science

Scope
Bachelor/Master 2 SWS (4 credits)
 

 

For more information, including lecture dates, see the Bachelor's CourseCatalog/Master's Course Catalog and 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 independently implement two to three given tasks in the parallel programming environment in small groups. These tasks are the same for all groups, but each group uses a different parallel programming system. There will be several systems to choose from, for example Legion, Chapel, Julia, and CompsS. The requirements include the theoretical elaboration of a parallel algorithm, the implementation as well as testing on the cluster of the University of Kassel. At the end, all groups present their results and experiences, which are then discussed.

Course
Bachelor/Master Computer Science

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

 

For more information, including lecture dates, please refer to the Bachleor lectureschedule/Masterlecture schedule and the Moodle course. If you have any questions, Prof. Dr. Claudia Fohry, M.Sc. Lukas Reitz and M. Sc. Rüdiger Nather will be happy to answer them.