HIP Winter School 2021

Fabian Isensee (HIP Applied Computer Vision Lab, Division of Medical Image Computing, German Cancer Research Center) , Guido Juckeland (Helmholtz-Zentrum Dresden-Rossendorf) , Lokamani Lokamani (HZDR) , Peter Steinbach (HZDR) , Philipp Heuser, Sara Krause-Solberg (HIP, DESY)

HIP Winter SchoolThe Helmholtz Imaging Platform invites young researchers from all Helmholtz Centers for the 2021 (virtual) HIP Winter School. This year’s Winter School is focused on introductions to three crucial IT related topics for imaging: HPC computing (25.11.2021), GPU usage (02.12.2021) and Pytorch (09.12.2021). After the an initial registration period exclusively for members of the HIP projects, a small contingent of places will be available for all to apply (places will be as equally as possible be distributed between the centers).


Introduction to HPC computing (25.11.2021) – Lokamani Lokamani et al. HZDR

High-performance Computing (HPC) clusters are used for large scale data processing and data analysis, fine grained parallel calculations and simulations of ever increasing fidelity. The course material is meant to introduce learners to the core principles behind the using a HPC cluster, how to connect to it, how to dispatch jobs and retrieve their results, and how to program applications that can harness the full power of this machinery.

Introduction to GPU usage (02.12.2021) – Guido Juckeland et al. HZDR

Graphic processing units (GPUs) have a natural affinity to imaging related topics as they are specialized processors for generating computer images. This day will cover how to use GPUs for general purpose computing tasks, which includes memory handling, writing GPU code (kernels) and some performance considerations. The goal is to enable you to also understand GPU error messages from frameworks like Pytorch that abstract GPU usage. The training will use CUDA for the hands on part, but always provide the equivalent syntax for OpenCL, OpenMP, OpenACC.

Introduction Pytorch (09.12.2021) – Peter Steinbach, Steve Schmerler et al. HZDR/Helmholtz AI

We give an introduction to PyTorch, one of the most widely used Python-based neural network packages. We'll cover model creation, training and testing as well as give pointers to under-the-hood techniques such as automatic differentiation.


Prerequisites: If you have already written small programs with a language of your choice and know the difference between a “variable” and a “function” and obtain a minimal knowledge of using the UNIX command line, you are good to go. Basic knowledge of Python is recommended. For the PyTorch part, knowledge of the Python programming language, ideally also the numpy package and basic neural network theory will be helpful.


How to apply?

For the application process we (ab)use the abstract submission system. To apply for the HIP Winter School 2021 click on "Call for abstracts" and fill in the form. There are a few questions regarding your motivation, prior knowledge and the setup of your system to make sure that you can follow the tutorials. You can apply until 20th Oct. 2021. We will notify until 26th Oct if your application was successful.

    • 10:00 10:50
      Logging in

      What is a super computer?
      Where is a super computer?
      How do I connect to it?
      How do I transfer data to and from it?

    • 10:50 11:35
      Batch systems and schedulers 101

      Why is a scheduler necessary?
      How do I launch a program to run on any one remote host in the cluster?
      How do I capture the output of a program that is run on a remote host?

    • 11:35 12:05
      Working with the scheduler

      How do I know if something went wrong with my jobs?
      How to decrease the waiting time of your jobs?
      How do I cancel a job?

    • 12:20 12:50
      Working with the shared file system

      How do I store a file on node so that another node can see it?
      How do I store a file on node so that another node cannot see it?
      Do I really need scp for all of the above?

      Convener: Mani Lokamani (HZDR)
    • 12:50 13:20
      Changing the Environment

      How to extend the software installation of a HPC cluster?

    • 14:20 15:10
      Estimation of Pi for Pedestrians

      How do I find the portion of a code snippet that consumes the longest time?

    • 15:10 15:55
      Parallel Estimation of Pi for Pedestrians

      What are data parallel algorithms?
      How can I estimate the yield of parallelization without writing one line of code?
      How do I use multiple cores on a computer in my program?

    • 16:15 17:00
      Higher levels of parallelism

      What were the key changes when using the multiprocessing library?
      How could this be implemented with dask?
      How does a conversion using dask high level API compare?

    • 17:00 17:45
      Searching for Pi

      How do I analyze a lot of large files efficiently?

    • 18:00 18:30
      Bonus session: Distributing computations among computers: Bonus session: Distributing computations among computers*

      What is the message passing interface (MPI)?
      How do I exploit parallelism using the message passing interface (MPI)?

    • 10:00 11:30
      GPU architecture and data movement

      Why GPU Computing?
      How does a GPU integrate into a compute system?
      How to move data between the host and device?

      Convener: Guido Juckeland (Helmholtz-Zentrum Dresden-Rossendorf)
    • 11:40 13:10
      Running programs on the GPU (kernels)

      How to write code for the GPU?
      How to generate work distribution on the GPU?

      Convener: Guido Juckeland (Helmholtz-Zentrum Dresden-Rossendorf)
    • 13:50 15:20
      Memory management on the GPU

      How to use the different types of GPU memory?
      When and how to use atomic operations?

      Convener: Guido Juckeland (Helmholtz-Zentrum Dresden-Rossendorf)
    • 15:30 17:00
      Tuning Performance of GPU codes

      How to use profilers?
      What helps/hurts performance?

      Convener: Guido Juckeland (Helmholtz-Zentrum Dresden-Rossendorf)
    • 09:00 12:00
      Intro, Tensors, Datasets and DataLoaders
    • 13:00 15:00
      Transforms, Model building
    • 15:30 17:30
      Autodiff, training loop, model saving and loading