Les meilleurs cours et tutoriels pour apprendre et se perfectionner en calcul scientifique et de haute performance
Les meilleurs cours et tutoriels pour apprendre et se perfectionner en calcul scientifique et de haute performance
Cette page présente une sélection des meilleurs tutoriels et cours de formation gratuits pour apprendre les environnements decalcul scientifique et de haute performance (HPC), de niveau débutant à expert. Vous y trouverez tous les cours et tutoriels de formation pour apprendre les technologies propres au calcul scientifique et de haute performance. Ces technologies vont du simple parallélisme sur une machine à l'exécution d'un programme sur un superordinateur complet.
Page lue fois.
Nombre d´auteurs : 21, nombre de traducteurs : 6, nombre d´articles : 24, dernière mise à jour : 21 juin 2021
Sommaire
menu
Débuter
-
Premiers pas avec Python pour la science : le calcul scientifique avec Python
par Fernando Perez, Emmanuelle Gouillart, Gaël Varoquaux, Valentin Haenel, Raphaël SebanLes besoins d'un scientifique sont bien définis et Python est un langage de programmation adapté pour ceux-ci. -
Apprendre NumPy - La bibliothèque de calcul numérique de Python
par Gabor Laszlo Hajba, Laurent RosenfeldCe tutoriel est le premier d'une série de tutoriels présentant NumPy, la bibliothèque de calcul numérique de Python. -
L'objectif de cours est de faire un tour d'ensemble des techniques matérielles et logicielles mises en oeuvre au sein des architectures des processeurs à haute performance, afin d'en tirer le meilleur parti lors de l'écriture de programmes faisant un usage intensif du processeur et de la mémoire. -
Ce cours vous donne la possibilité d'apprendre la parallélisation multitâche pour machines à mémoire partagée avec OpenMP. OpenMP amène aujourd'hui une interface standard de haut niveau pour une programmation parallèle de type SPMD (Single Program Multiple Data) sur machine à mémoire partagée. Basée sur les techniques du multithreading, on peut considérer OpenMP comme l'un des grands standards au service du calcul scientifique. -
Ces diapositives présentent la programmation parallèle pour le calcul scientifique avec les outils phare dans le domaine : MPI pour l'échange de messages entre machines et OpenMP pour la mémoire partagée (multic?ur).
menu
Architecture des machines parallèles
-
L'objectif de cours est de faire un tour d'ensemble des techniques matérielles et logicielles mises en oeuvre au sein des architectures des processeurs à haute performance, afin d'en tirer le meilleur parti lors de l'écriture de programmes faisant un usage intensif du processeur et de la mémoire. -
Cette vue d'ensemble présente les méthodes utilisées pour le calcul parallèle d'images de synthèse, plus particulièrement sur les processeurs graphiques. -
Ce cours vous permettra de comprendre les architectures parallèles et leur programmation pour le calcul scientifique. Il abordera tant les machines à mémoire partagée que le passage de messages. -
Ce tutoriel vous donnera l'envie de comprendre le concept de grille de calcul, d'identifier les défis associés et d'entrevoir les perspectives scientifiques des grilles informatiques. -
Ces diapositives présentent une introduction au métacalcul et au calcul global.
menu
Programmation parallèle à mémoire partagée (OpenMP)
-
Ces diapositives présentent la programmation parallèle pour le calcul scientifique avec les outils phare dans le domaine : MPI pour l'échange de messages entre machines et OpenMP pour la mémoire partagée (multic?ur). -
Ce cours vous donne la possibilité d'apprendre la parallélisation multitâche pour machines à mémoire partagée avec OpenMP. OpenMP amène aujourd'hui une interface standard de haut niveau pour une programmation parallèle de type SPMD (Single Program Multiple Data) sur machine à mémoire partagée. Basée sur les techniques du multithreading, on peut considérer OpenMP comme l'un des grands standards au service du calcul scientifique. -
Ce cours vous permettra de comprendre les architectures parallèles et leur programmation pour le calcul scientifique. Il abordera tant les machines à mémoire partagée que le passage de messages. -
OpenMP : parallélisation multitâche pour machines à mémoire partagée
par Jalel Chergui, Pierre-François LavalléeCe cours présente la parallélisation multitâche pour machines à mémoire partagée avec OpenMP. Un programme OpenMP est une alternance de régions séquentielles (traditionnelles) et de régions parallèles (annotées avec OpenMP), ce qui permet d'en accélérer l'exécution si les régions parallèles représentent suffisamment d'efforts. Vous apprendrez à utiliser cette API dans vos prorgammes.
menu
Programmation parallèle par échange de messages (MPI)
-
Ces diapositives présentent la programmation parallèle pour le calcul scientifique avec les outils phare dans le domaine : MPI pour l'échange de messages entre machines et OpenMP pour la mémoire partagée (multic?ur). -
Le débogueur parallèle TotalView est un outil assez unique qui permet de travailler sur un code parallèle tout en travaillant sur tous les threads ou processus en même temps. La seule condition est que les différents processus soient des processus MPI. En outre, TotalView possède un outil de vérification de la mémoire, MemoryScape, permettant de détecter tout problème lié à la mémoire ainsi qu'un ReplayEngine, capable de remonter le fil d'une exécution. -
Ce cours vous permettra de comprendre les architectures parallèles et leur programmation pour le calcul scientifique. Il abordera tant les machines à mémoire partagée que le passage de messages.
menu
Programmation sur processeurs graphiques
-
Une introduction à CUDA et au calcul sur GPU, comparativement avec les CPU. Avant la fin, vous pourrez écrire vos premiers noyaux. Cette introduction se base sur CUDA 2.1 et 2.2. -
Dans l'article précédent, vous avez pu vous familiariser avec CUDA. Nous n'avons que survolé la matière, afin de vous donner goût au calcul par GPU. Cette fois-ci, nous allons un peu plus approfondir certains points, notamment la mémoire et les bibliothèques livrées avec CUDA. -
Cette vue d'ensemble présente les méthodes utilisées pour le calcul parallèle d'images de synthèse, plus particulièrement sur les processeurs graphiques.
menu
Calcul scientifique en Python
-
Apprendre NumPy - La bibliothèque de calcul numérique de Python
par Gabor Laszlo Hajba, Laurent RosenfeldCe tutoriel est le premier d'une série de tutoriels présentant NumPy, la bibliothèque de calcul numérique de Python. -
Premiers pas avec Python pour la science : le calcul scientifique avec Python
par Fernando Perez, Emmanuelle Gouillart, Gaël Varoquaux, Valentin Haenel, Raphaël SebanLes besoins d'un scientifique sont bien définis et Python est un langage de programmation adapté pour ceux-ci. -
Premiers pas avec Python pour la science 2 : le langage Python
par Chris Burns, Christophe Combelles, Gaël Varoquaux, Emmanuelle Gouillart, Alexandre GalodePython est un langage de programmation au même titre que le langage C, le Fortran, le BASIC, PHP… Voici quelques-unes des fonctionnalités spécifiques de Python : c'est un langage interprété (par opposition aux langages compilés). Contrairement au C ou au Fortran, par exemple, on ne compile pas du code Python avant de l'exécuter. En outre, Python peut être utilisé de manière interactive : de nombreux interpréteurs sont disponibles, à partir desquels les commandes et les scripts Python peuvent être exécutés ; c'est un logiciel gratuit placé sous licence Open Source : Python peut ainsi être utilisé et distribué gratuitement, y compris pour des applications commerciales ; il est multiplate-forme : Python est disponible pour la plupart des systèmes d'exploitation, Windows, Linux/Unix, MacOS X, la plupart des OS pour téléphones portables ; c'est un langage très facile à lire, avec une syntaxe claire ; c'est un langage pour lequel de nombreux packages de grande qualité sont valables, et ce pour de nombreuses applications, des frameworks web aux calculs scientifiques ; c'est un langage avec lequel il est très facile de s'interfacer, en particulier depuis du langage C ou du C++ ; plusieurs autres fonctionnalités du langage sont abordées dans ce qui suit. Par exemple, Python est un langage orienté objet, avec un typage dynamique (la même variable peut contenir des objets de différents types durant l'exécution du programme). Ce tutoriel vous mènera dans vos premiers pas avec le langage. -
Premiers pas avec Python pour la science 3 : manipuler des données numériques avec NumPy
par Emmanuelle Gouillart, Didrik Pinte, Gaël Varoquaux, Paul Virtanen, f-leb, Alexandre GalodeCe chapitre dispense un aperçu de NumPy, l'outil incontournable pour tout calcul numérique en Python. Vous y apprendrez à gérer des matrices et à effectuer des opérations avancées. -
Premiers pas avec Python pour la science 5 : calcul scientifique de haut niveau SciPy
par Emmanuelle Gouillart, Didrik Pinte, Gaël Varoquaux, Paul Virtanen, sweetasnzLa bibliothèque SciPy contient de nombreuses boîtes à outils consacrées aux méthodes de calcul scientifique. Ses différents sous-modules correspondent à différentes applications scientifiques, comme les méthodes d'interpolation, d'intégration, d'optimisation, de traitement d'images, de statistiques, de fonctions mathématiques spéciales, etc. SciPy peut être comparée à d'autres bibliothèques standards de calcul scientifique, comme la GSL (GNU Scientific Library for C and C++), ou les boîtes à outils de Matlab. SciPy est la librairie à utiliser en Python pour les routines scientifiques ; elle fonctionne parfaitement sur les tableaux ou matrices NumPy de telle sorte que NumPy et SciPy peuvent interagir conjointement. Avant d'implémenter une routine, il est préférable de vérifier si la méthode n'est pas déjà fournie dans la librairie SciPy. Les scientifiques n'étant pas toujours des experts en programmation, ils ont souvent tendance à vouloir « réinventer la roue », ce qui les mène à produire du code souvent bogué, non optimisé, difficile à maintenir et pas toujours interopérable. A contrario, les routines SciPy ont été optimisées et testées et devraient donc être utilisées lorsque cela est possible. -
Premiers pas avec Python pour la science 6 : obtenir de l'aide et trouver la documentation sur SciPy
par Emmanuelle Gouillart, s0h3ckPlutôt que de connaître toutes les fonctions dans Numpy et Scipy, c'est important de trouver rapidement l'information à travers la documentation et l'aide disponibles. Ce tutoriel vous apprend à utiliser quelques astuces pour obtenir de l'information sur la programmation Python avec NumPy et SciPy. -
Dans ce tutoriel, je vous donnerai une brève introduction concernant Cython, une bibliothèque Python qui permet une interaction avec du code écrit en C. Et peu importe que vous utilisiez du code C depuis Python ou que vous appeliez du code Python depuis le C. Cela semble magique non ? Et cela n’est pas si compliqué que ça en a l’air. Nous allons creuser un peu et voir ce qu’il est possible de faire. -
L'objectif est de montrer quelques utilisations de l'appel de code Python au sein d'un code écrit en C. -
Ce tutoriel est le second d'une série de cours présentant NumPy, la bibliothèque de calcul numérique de Python. Le premier volet de cette série a été publié dans l'article Tutoriel pour apprendre NumPy et nous examinerons ici certaines fonctionnalités plus avancées. Ces tutoriels ont pour objectif de donner une compréhension plus approfondie de la science des données avec Python en apprenant les bases. Continuons et voyons ce que nous pouvons faire de plus avec NumPy.
menu
Calcul scientifique en Julia
-
Dans ce tutoriel, je vais vous présenter un nouveau langage, Julia. Ce langage est en développement au MIT depuis 2009 et la première version publique date de 2012. Il est actuellement en phase de stabilisation des fonctionnalités pour sa version 0.7. -
Julia est un langage de programmation récent orienté (très haute) performance : il s'agit de l'un des très rares langages à être utilisé sur un superordinateur ! Par exemple, il a été utilisé pour le projet Celeste, qui consiste en l'analyse d'images astronomiques : les chercheurs ont pu cataloguer 188 millions d'objets astronomiques, dénichés dans pas moi de 178 téraoctets de données, en moins de quinze minutes — le fruit de trois années de recherche. Julia a ainsi été préféré au C, au C++ ou au Fortran, les trois langages de prédilection pour ce genre d'application. En effet, ces langages ont l'avantage de limiter leur impact sur la performance des applications : on a accès très directement à la machine, sans mécanisme lourd comme une machine virtuelle. De plus, les compilateurs optimisent très fortement le code généré, pour qu'il tourne plus vite. Julia dispose des mêmes avantages (donc en performance, point crucial pour cette application), tout en étant plus facile à utiliser : il s'agit d'un langage bien plus dynamique (comme Python ou Ruby), avec des notations mathématiques habituelles (il est similaire à MATLAB, Octave ou encore Fortran). -
Julia est un langage de programmation orienté vers les applications scientifiques. Ces dernières ont assez souvent besoin de travailler avec des graphes, des structures de données assez courantes. LightGraphs.jl est une implémentation de haute performance tant de la structure de données que d'algorithmes classiques sur des graphes. -
Julia est un langage de programmation très dynamique, facilitant notamment la création de langages spécialisés. JuMP.jl en est un exemple : il s'agit d'un paquet Julia qui facilite la modélisation de programmes d'optimisation mathématique.