Authors
Affiliations

Gesellschaft für Informatik

deRSE

Gesellschaft für Informatik

deRSE

Florian Goth

Jan Phillip Thiele

Anna-Lena Lambrecht

RSE Computing

RSEs with expertise in HPC and other performance-critical computing domains specialize in optimizing code for efficient execution across various platforms, including clusters, cloud, edge, and embedded systems. They understand parallel programming models, hardware-specific optimizations, profiling tools, and platform constraints such as memory, energy, and latency. Their skills enable them to adapt software to diverse infrastructures, manage complex dependencies, and support researchers in accessing and using advanced computing resources effectively and sustainably.

Basic Scientific Computing

Module Overview

This module provides an entry‑level yet rigorous foundation in scientific computing for graduate students and researchers who need to design, implement, and evaluate computational experiments. Learners gain an awareness of the numerical underpinnings of modern simulation and data‑driven research, with an emphasis on writing reproducible, efficient, and trustworthy code.

Intended Learning Outcomes

By the end of the module participants will be able to

  1. Benchmark small programs and interpret performance metrics in a research context.
  2. Explain how approximation theory and floating‑point arithmetic affect numerical accuracy and stability.
  3. Identify when to use established simulation libraries (e.g. BLAS/LAPACK, PETSc, Trilinos) instead of custom code.
  4. Write simple GPU kernels and describe the core principles of accelerator programming.
  5. Submit and monitor batch & array jobs on a mid‑size compute cluster.
  6. Describe common HPC challenges—such as I/O bottlenecks, threading, and NUMA—and propose mitigation strategies.
  7. Maintain research software through continuous benchmarking.

Syllabus (Indicative Content)

Week Theme Topics
1 Benchmarking & Profiling Timing strategies · micro vs. macro benchmarks · tooling overview
2 Precision & Approximation IEEE‑754 recap · conditioning & stability · error propagation
3 Scientific Libraries BLAS/LAPACK anatomy · hierarchical I/O libraries · overview of PETSc/Trilinos/Hypre
4 GPU Primer Kernel model · memory hierarchy · CUDA/OpenCL/PyTorch lightning intro
5 Working on a Cluster Slurm basics · job arrays · job dependencies · simple Bash launchers
6 HPC Pitfalls I/O throughput · thread oversubscription · NUMA awareness
7 Software Maintenance Regression + performance tests · continuous benchmarking pipelines

Teaching & Learning Methods

Short lectures (30%) are coupled with hands‑on labs (70%). Students complete weekly notebooks and a mini‑project that reproduces and optimises a published computational result.

Assessment

Component Weight Details
Continuous labs 40% Weekly graded notebooks
Final mini‑project 60% Report, code, and benchmark suite

Prerequisites

  • Basic programming in Python, C/C++, or Julia
  • Undergraduate calculus & linear algebra

Key Resources

ChatGPT fantasy

Lecture: Scientific Computing Basics

SWS: 2 ECTS: 3

Exercise: Scientific Computing Basics Exercise

SWS: 2 ECTS: 3

Lecture: High Performance Computing

SWS: 2 ECTS: 3

Exercise: High Performance Computing Exercise

SWS: 2 ECTS: 3

Module Competences

ID Description Disciplines Prerequisites Evidence Author Source
comp_module_1 Benchmark and profile computational code to evaluate performance and bottlenecks Scientific Computing rse_tooling_2 Submit benchmark reports comparing implementations and justifying trade-offs RSE Curriculum Draft Link
comp_module_2 Explain and apply principles of approximation theory and numerical precision in scientific computing Scientific Computing Answer conceptual questions and implement small examples highlighting precision trade-offs RSE Curriculum Draft Link
comp_module_3 Explain floating-point arithmetic and its implications for scientific accuracy and performance Scientific Computing comp_module_2 Provide examples showing effects of precision loss and propose mitigations RSE Curriculum Draft Link
comp_module_4 Describe common simulation libraries and numerical frameworks (e.g., BLAS, LAPACK, PETSc, Trilinos) Scientific Computing List relevant libraries for a task and justify choice or avoidance of custom implementations RSE Curriculum Draft Link
comp_module_5 Compare interpreted and compiled languages in terms of performance and suitability for computing tasks Scientific Computing Write code samples in both types of language and explain their performance characteristics RSE Curriculum Draft Link
hpc_module_1 Run batch and array jobs on a cluster, including job dependencies High-Performance Computing rse_tooling_3 Submit job scripts using SLURM or similar systems demonstrating correct use of job arrays and dependencies RSE Curriculum Draft Link
hpc_module_2 Identify and manage common challenges in HPC systems (e.g., I/O bottlenecks, threading, NUMA memory) High-Performance Computing hpc_module_1 Provide performance logs and interpret bottlenecks in a real or simulated HPC task RSE Curriculum Draft Link
hpc_module_3 Use shell scripting (e.g., Bash) to automate HPC job submission High-Performance Computing rse_tooling_3 Submit scripts that automate the execution of HPC jobs and handle job logic RSE Curriculum Draft Link
hpc_module_4 Understand and use the principles of accelerator programming (e.g., GPU kernels and frameworks) High-Performance Computing Submit a small CUDA or OpenCL program with documentation of the principles used RSE Curriculum Draft Link
hpc_module_5 Maintain scientific computing software including use of continuous benchmarking High-Performance Computing comp_module_1 Provide benchmark and performance history for evolving versions of software RSE Curriculum Draft Link

Sources & Implementations:

Curricula

Courses

Programs