Software Lab

Parallel Programming of Many-core Architectures with OpenMP

Many-core processors are special multi-core processors designed for a particularly high degree of parallelism. Their potentially high computational power - enabled by the large number of cores - make them appealing for application in high-performance computing. As prerequisite for leveraging the potentially high performance, parallel programs with good scalability are needed.

In this software lab, students work on current many-core systems. They parallelize small programs using the industry standard OpenMP and develop optimization strategies concerning the applications’ runtime. At the end, the students present their results.

The objectives of this software lab cover learning of the programming of current many-core architectures with OpenMP. In addition, an understanding of the special properties of these architectures is imparted by examining and evaluating the runtime behavior of parallel programs on these architectures using performance models and performance analysis tools.

The list of current courses can be found at Teaching – Chair for Computer Science 12

HPC Cluster Challenge

Today, even common desktop PCs and laptops are equipped with multiple cores to increase overall compute power and to complete tasks in shorter runtime. However, due to the ever increasing demands for computational power in scientific and commercial areas, single computers are usually connected to each other. These network-connected computers are also known as cluster of compute nodes and may typically be operated by HPC centers or cloud providers.

In this software lab, students build, network and install their own small clusters based on different computer architectures. Furthermore, they port benchmarks to the corresponding clusters, engineer performance metrics and measure power consumption. At the end, the students present their results.

The objectives of this software lab are the basic knowledge of cluster construction, especially the setup of an own cluster with provided hardware. Moreover, the understanding of the specific characteristics of a cluster and their evaluation with regard to power consumption, energy efficiency and various performance metrics is conveyed.

The list of current courses can be found at Teaching – Chair for Computer Science 12

Parallel Programming Models for Applications in High-Performance Computing

Due to the ever increasing demands for computational power in high-performance computing, the power consumption of growing compute clusters increases as well. Therefore, parallel computer architectures with a promising performance-watt ratio are investigated, e.g., GPUs.

In this software lab, students parallelize a Conjugate Gradient (CG) algorithm using three different parallel programming models for CPU and GPU architectures. This approach covers the application of low-level and high-level directive-based programming models. At the end, the students present various optimization techniques for the given problem.

The objectives of this software lab are the understanding of different parallel computer architectures, as well as the knowledge how to program them in an efficient and performance-oriented manner.

The list of current courses can be found at Teaching – Chair for Computer Science 12