Julia is a high-level programming language well suited for scientific computing and data science. Just-in-time compilation, among other things, makes Julia really fast, yet interactive. For heavy computations, Julia supports multi-threaded and multi-process parallelism, both natively and via a number of external packages. It also supports memory arrays distributed across multiple processes either on the same or different nodes.
In this hands-on introductory workshop, we will start with a detailed look at multi-threaded programming in Julia, with many hands-on examples. We will next study multi-processing with the Distributed standard library and its large array of tools. Finally, we will work with large data structures on multiple processes using DistributedArrays and SharedArrays libraries.
We will demo parallelization using several problem solvers: a slowly converging series; a Julia set; a linear algebra solver; and, an N-body solver. We will run examples on a multi-core laptop and an HPC cluster.
Topics
- Multi-threaded programming
- Multi-processing programming
- Distributed arrays
- Shared arrays
Schedule
- February 14, 12:30-15:30hrs EASTERN
- February 16, 12:30-15:30hrs EASTERN
- February 18, 12:30-15:30hrs EASTERN
Sessions will be delivered in English, but we will have the ability to respond to questions in French. The lesson material will be available in English.
Requirements
- Basic understanding of HPC at the introductory level (how to submit jobs with Slurm scheduler), and basic knowledge of Linux command line.
- Participants are strongly encouraged to have a Compute Canada account, and a cloud project, well before the workshops begin. It can take several business days to obtain an account. https://ccdb.computecanada.ca/
- You will need your own laptop or desktop on which you have administrative privileges to install software.
- Participants must register using their institutional or organizational email address (not a personal email, ie. Gmail).
Connection details will be provided the day before the session to registrants with an institutional/organizational email address.
*****
Formation nationale de la fédération Calcul Canada : Programmation parallèle avec Julia
Sommaire : Apprenez la programmation parallèle multifil et multiprocessus avec Julia. Aucune connaissance préalable de la programmation avec Julia n’est requise.
Julia est un langage de programmation de haut niveau qui est bien adapté au calcul scientifique et à la science des données.
Ce langage est très rapide tout en étant interactif, grâce à la compilation juste-à-temps (JIT compilation). Pour le traitement de calculs de haute intensité, Julia permet le parallélisme multifil et multiprocessus directement ou grâce à des paquets de programmation externes. Ce langage prend aussi en charge les matrices de mémoires distribuées sur plusieurs processus, sur un ou plusieurs nœuds.
Cet atelier est une introduction à Julia où nous examinerons d’abord la programmation multifil à l’aide de plusieurs exemples pratiques. Nous étudierons ensuite la programmation multiprocessus avec le paquet de programmation standard Distributed et ses nombreux outils. Nous travaillerons aussi avec plusieurs processus sur de grandes structures de données en utilisant les paquets de programmation externes DistributedArrays et SharedArrays.
Nous démontrerons la parallélisation à l’aide de plusieurs solveurs : une série à convergence lente; l´ensemble de Julia; un solveur d’équations linéaires; et un solveur de problème à N corps. Pour la démonstration, nous travaillerons sur un ordinateur multicoeur portable et sur une grappe de calcul de haute performance.
Sujets
- Programmation multifil
- Programmation multiprocessus
- Vecteurs distribués
- Vecteurs partagés
Les séances se dérouleront en anglais, mais vous pourrez poser des questions en français. Le contenu ne sera cependant disponible qu’en anglais.
Horaire
- 14 février, de 12 h 30 à 15 h 30 (heure de l’Est)
- 16 février, de 12 h 30 à 15 h 30 (heure de l’Est)
- 18 février, de 12 h 30 à 15 h 30 (heure de l’Est)
Prérequis
- Compréhension du calcul de haute performance à un niveau de base (comment soumettre une tâche à l'ordonnanceur Slurm). Connaissance de base de la ligne de commande sous Linux.
- Nous vous encourageons fortement à posséder un compte avec Calcul Canada et à disposer d’un projet infonuagique bien avant le début des ateliers. Il peut y avoir une attente de plusieurs jours ouvrables avant que vous n’obteniez votre compte et votre projet. https://ccdb.computecanada.ca/
- Vous aurez besoin de votre propre ordinateur sur lequel vous disposez de privilèges administratifs pour installer des logiciels.
- Pour vous inscrire, vous devez utiliser une adresse de courriel fournie par votre établissement d’enseignement ou votre organisation. Les adresses de courriel personnelles (par exemple Gmail) ne sont pas acceptées.
La veille de chaque rencontre, vous recevrez par courriel les directives pour joindre l’atelier.