Julia for High-Performance Computing

This 4-day course introduces the Julia programming language as a modern approach to high-performance numerical computing. Starting from the foundations and characteristic language features (e.g. multiple dispatch, type inference) the course will discuss and demonstrate how Julia manages to deliver high performance while also being high-level and dynamic. It will teach participants the necessary language concepts to achieve high performance in Julia and avoid common pitfalls. The course will cover "serial" and parallel computing (multithreading, distributed computing, MPI) and will provide insights into how to readily offload computations to NVIDIA GPUs.

Hands-on sessions on each day will allow the participants to interactively explore the language and immediately test and apply the discussed concepts.

This course is especially appropriate for you if

  • you have HPC experience and are interested in Julia, or
  • you have basic Julia knowledge and want to dive into the HPC aspects of the language.

Veranstaltungsort

HLRS, University of Stuttgart
Nobelstraße 19
70569 Stuttgart, Germany
Room 0.439 / Rühle Saal
Location and nearby accommodations

Veranstaltungsbeginn

24. Okt 2023
08:30

Verstaltungsende

27. Okt 2023
15:30

Sprache

Englisch

Zurück zur Liste

Prerequisites and content levels

Prerequisites
  • Basic programming experience in any language.
  • Familiarity with UNIX/Linux (esp. basic terminal usage) is recommended.
  • Elemental Julia and/or HPC knowledge is a plus.

(If you want to follow along on your personal laptop, make sure to have Julia 1.9 and Jupyter installed and working.)
 

Content levels
  • Basic: 7 hours
  • Intermediate: 11 hours
  • Advanced: 5 hours

Learn more about course curricula and content levels.

Instructor

Dr. Carsten Bauer (Paderborn Center for Parallel Computing)
 

Learning outcomes

After this course, participants will:

  • have a basic understanding of Julia’s fundamental design and its compilation pipeline
  • know how to write efficient, serial Julia and avoid typical pitfalls
  • know how to profile and benchmark code performance
  • be able to parallelize Julia using multithreading, distributed computing and GPU acceleration
  • be familiar with common (remote) development workflows

Agenda

Local registration starts on first course day at 8:30.

The course runs from Tuesday to Friday. Days start at 9 AM and end at 5 PM (earlier end on Friday).
On the first evening there will be a social event (Stuttgart city tour + dinner). A detailed schedule will
follow.
Among others, the following topics will be covered in the course:


Julia fundamentals

  • Julia’s type system and multiple dispatch paradigm
  • Code specialization and compilation
  • Duck typing and generic programming
  • Development workflows and reproducibility

Performance programming

  • Benchmarking and profiling (statistical and instrumented)
  • Type instabilities
  • Syntactic loop fusion
  • SIMD

Parallelisation

  • Multithreading
  • Distributed computing (e.g. MPI)
  • GPU acceleration via array abstractions and CUDA kernels

Moreover, there will be an experience talk by Dr. Bernat Font from Barcelona Supercomputing Center who will share his experience of using Julia for HPC, comparing multi-threaded CPU execution and GPU execution.
Although it won’t be identical, you may check out the content and schedule of last years course
at github.com/carstenbauer/JuliaHLRS22 for further information.

Course material

Slides and Jupyter notebooks will be available for all participants on GitHub.
The material can be found on https://github.com/carstenbauer/JuliaHLRS23 .

HLRS concept for on-site courses

Besides the content of the training itself, another important aspect of this event is the scientific exchange among the participants. We try to facilitate such communication by

  • a social event on the evening of the first course day,
  • offering common coffee and lunch breaks and
  • working together in groups of two during the exercises.

Registration information

Register via the button at the top of this page.
We encourage you to register to the waiting list if the course is full. Places might become available.

Registration closes on September 24, 2023.

Fees

  • Students without master’s degree or equivalent: 35 Euro
  • PhD students or employees at a German university or public research institute: 75 Euro
  • PhD students or employees at a university or public research institute in an EU, EU-associated or PRACE country other than Germany: 150 Euro
  • PhD students or employees at a university or public research institute outside of EU, EU-associated or PRACE countries: 300 Euro
  • Other participants, e.g., from industry, other public service providers, or government: 780 Euro

Link to the EU and EU-associated (Horizon Europe), and PRACE countries.

Our course fees include coffee breaks (in classroom courses only).

Contact

Lucienne Dettki, phone 0711 685 63894, dettki(at)hlrs.de
training(at)hlrs.de

HLRS Training Collaborations in HPC

HLRS is part of the Gauss Centre for Supercomputing (GCS), together with JSC in Jülich and LRZ in Garching near Munich. EuroCC@GCS is the German National Competence Centre (NCC) for High-Performance Computing. HLRS is also a member of the Baden-Württemberg initiative bwHPC.

This course is provided within the framework of the bwHPC training program.

Further courses

See the training overview and the Supercomputing Academy pages.