Passer au contenu principal

Research - Introduction to parallel computing with Python, Julia, and R

Objectives

  • Learn the main concepts of parallel computing
  • Learn how to apply these main concepts of HPC programming with Python, Julia and R.

Target audience

Any PhD students, post-docs, researchers of UNIL and CHUV who develop some codes for the clusters and want to learn the basis of parallel computing in order to improve performance of their codes.

Content

InThe introduction gives a firstlanguage-agnostic presentation,overview theof mainhigh-performance principlescomputing, with concrete examples of parallel computingprogramming. It covers basic hardware concepts, key cluster and SLURM concepts for running embarassingly parallel jobs, and clarifies common HPC terminology that is often used ambiguously.

The concepts introduced in the first module are introduced.further Thanksexplored toin fewthree examples,half-day, differentlanguage-specific ways of parallelising a program are presented (data decomposition, functional decomposition, …).

Then a second presentation will focus on Python and the specificities of the language regarding parallel computing. In particular the following libraries will be presented: Numpy, Numba, CuPy, Dask.

A third presentation will focus on Julia, especially on it's characteristics that make it suitable for high performance computing. This will cover mainly the native Julia librariessessions dedicated to variousPython, formsJulia, and R. Through hands-on examples, participants are guided through the process of parallelism.

turning

Finally,a thesequential lastcode presentationinto willa focusparallel one. Emphasis is placed on Rreasoning about data, algorithms, and it'shardware simpleconstraints mechanismsin and external librariesorder to benefitselect froman multi-coreappropriate architectures.parallelization paradigm.

At the end of the course, the participants are expected to:

  • Understand the various forms of parallelism:
    • multi-threading
    • distributed computing
    • GPU computing
  • Be able to write simple high performance computing codes.

Length

2 days

Organization

On a quarterly basis

Location

GEO-1628

Prerequisites

  • Basic knowledge of either Python, Julia, or R, depending on the modules you will attend.
  • Basic knowledge of working with command line tools on Linux based operating systems. If you do not feel comfortable with Linux commands, please follow the course dedicated to Linux.
  • Be comfortable with all the topics addressed in the introduction course DCSR, Introduction to using the clusters, which has been recorded and is available as videos:
  • Please bring your own laptop with WIFI eduroam activated. You will need a SSH client to connect to the clusters (see How To Access The Clusters). Windows users can install e.g. Putty or MobaXterm or a Linux virtual machine or use the Windows Subsystem for Linux (WSL) if available (Windows 10). Please contact us at helpdesk@unil.ch (with DCSR in the title) if you have trouble to connect.

IMPORTANT: Please register using your UNIL email address!


Course dates and registration