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 particularly suitable for students and researchers who are interested in numerical computing and want to learn how to write high-performance code using the Julia programming language.

Location

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

Start date

Sep 10, 2024
08:30

End date

Sep 13, 2024
15:30

Language

English

Entry level

Intermediate

Course subject areas

Parallel Programming

Programming Languages for Scientific Computing

Back to list

Prerequisites and content levels

Prerequisites
  • Basic programming / numerical computing experience in any language (e.g. Julia, Python, Fortran, C++) is required.
  • Basic knowledge of Julia is advantageous.
  • Familiarity with Juptyer notebooks and UNIX/Linux (esp. basic terminal usage) is highly recommended.
  • Elementary understanding of computer architecture is a plus.
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
  • Development workflow (for HPC clusters)

Performance programming

  • Type (in-)stability
  • Memory usage optimization
  • Instruction-level parallelism
  • Profiling

Parallelization

  • Task-based multithreading
  • Basic GPU acceleration
  • Distributed computing (Distributed.jl and MPI.jl)

Course material

Slides, agenda and Jupyter notebooks will be available for all participants on GitHub in time before the course.
 

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 August 25, 2024 (extended registration phase).

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).

HLRS concept for on-site courses

Besides the content of the training itself, an 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.

Lunch Breaks

We plan to have lunch in the unversity's canteen (Mensa Stuttgart-Vaihingen, have a look at their menu online). Two other near possibilities for lunch are on all days:

  • A food truck from 11:00-14:00 in Allmandring 35, approximately 300 m from HLRS,
  • Bakery Sehne, near bus stop "Im Lauchhau", approximately 400 m from HLRS.

We will update this information if opening times etc. change and inform you more precisely before the course starts.

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.