1–12 juil. 2024
Annecy / LAPP
Fuseau horaire Europe/Paris

Les jeudis Gray Scott

Retrouvez tous les webinaires en replay ici.

25/01/2024 -10h : Présentation de la Gray Scott School

Présenté par Pierre Aubert
Ce webinaire présentera toutes les nouveautés de cette seconde édition, les modalités de participation, de partenariat, la programmation 2024 ainsi que les jeudis Gray Scott qui sont des webinaires techniques cadencés tout au long de l’année 2024.
Replay, Youtube
Présentation

 

19/01/24 - 14h : Tests unitaires, une philosophie et une aide face à son logiciel.

Présenté par Sébastien Valat, INRIA
Le développement logiciel est au cœur d'un nombre croissant de domaines de recherches aujourd'hui. Une complexité qui parfois peut nous amener à être perdus devant notre propre code, ou plus difficile celui que l'on construit à plusieurs dans le temps long. Les tests unitaires sont un des moyens inventés par le génie logiciel pour atténuer ces problèmes. 
Replay, Youtube
Présentation


01/02/2024 -10h : Architecture CPU

Présenté par Hadrien Grasland
L'organisation interne des CPUs modernes est complexe et en partie secrète. Mais les performances d'exécution des programmes en découlent directement. Par conséquent, lorsqu'on veut optimiser les performances de programmes calculatoires, il est utile de s'intéresser un peu à ce qui se passe sous le capot, c'est l'objet de ce webinaire.
Replay, Youtube
Présentation


08/02/2024 -10h : Précision des calculs

Présenté par Vincent Lafage
Nous calculons, vite de préférence, avec des objets qui devraient être simples (on les qualifie même de « types primitifs ») : les nombres à virgule flottante. Float ou double, certains langages les appellent même Real. Nous aborderons quelques aspects déstabilisants de leur comportement : les nombres effectivement représentables en flottant et les erreur induites sur les autres. De plus, différents cas d’usage seront présentés pour naviguer entre les écueils du calcul à virgule flottante, et trouver l’équilibre dans le ménage à trois de la performance, de la précision et de la correction.
Replay, Youtube
Présentation


15/02/2024 -10h : Allocations mémoires, pourquoi et comment profiler (MALT, NUMAPROF)

Présenté par Sébastien Valat
La mémoire est parfois devenue un problème majeur dans les applications, de par la question des performances d'accès mais aussi par les volumes géré au sein d'application souvent de plus en plus dynamiques et complexes. Se pose alors la question, comment se rendre compte de ses erreurs et de patterns problématiques facilement corrigeable. Comment trouver où elle est consommée lorsque l'on atteint les limite de sa machine ?Après ma thèse sur la gestion mémoire en contexte HPC (NUMA, parallèle....) j'ai eu l'opportunité de développer deux profileurs mémoires (malloc et numa) maintenant open-sources pour le C/C++/Fortran (rust). Je présenterais donc succinctement ces outils avec en principe quelques exemples d'observations obtenues.
Replay, Youtube
Présentation


22/02/2024 -10h : Calcul en C++ 17/20/23 avec les std::algorithm

Présenté par Pierre Aubert
De nos jour, le hardware devient de plus en plus complexe. Développer des programmes efficaces sur toutes ces architectures devient alors de plus en plus difficile. Plusieurs solutions sont alors possibles. Utiliser des bibliothèques spécialisées pour telle ou telle architecture, mais laquelle choisir ? Le C++17 introduit des algorithmes haut niveau qui permettent de s'affranchir des différents indices habituels qui doivent être passés lors de la compilation afin de vectoriser ou de paralléliser un calcul. Cela simplifie profondément les programmes qui utilisent cette méthode et permet de tirer pleinement parti des optimisations du compilateur. 
Comme les algorithmes à partir de C++17 se reposent sur le compilateur. Lors d'un prochain webinaire nous verront comment l'utilisation d'un compilateur spécialisé pour les GPU (comme NVC++) permettra au programme de s'exécuter également sur GPU sans aucune modification.

Replay, Youtube
Présentation


29/02/2024 -10h : Le langage Rust

Présenté par Hadrien Grasland
L'offre de langages de programmation pour le calcul numérique peut sembler pléthorique pour le non initié. Mais dès qu'on est un peu exigeant sur la marchandise (langage généraliste en termes de cibles matérielles et types d'applications, programmes relativement faciles à optimiser, passe bien à l'échelle sur les gros projets...), on se retrouve vite sur un terrain qui est traditionnellement la chasse gardée du C++. Aujourd'hui, Rust tente de bousculer cet ordre établi. Dans cette présentation, nous allons voir sur quels plans Rust innove par rapport à son ancêtre, et pourquoi ce langage est un solide prétendant au titre de remplaçant de C++ pour les applications calculatoires.

Replay, Youtube
Présentation


07/03/2024 -10h : Architecture GPU

Présenté par Pierre Aubert
De nos jours, le calcul intensif utilise de plus en plus les processeurs graphiques, ou GPU. Nous verrons dans ce webinaire leur architecture matériel, leurs points communs et différences avec les CPU abordés précédemment ainsi que le comportement des pilotes récents, l'impact du parallélisme exprimé sur les performances obtenues et quelques méthodes qui permettent d'avoir de la flexibilité dans le développement tout en conservant les performances.

Replay, Youtube
Présentation

08/03/2024 - 9h30 : Profilage de compilation C++ avec crofiler

Présenté par Hadrien Grasland

En C++, on peut faire un usage détourné des templates et de leurs spécialisations pour effectuer des calculs et transformations de code au moment de la compilation d'un programme. Certaines bibliothèques utilisent cette possibilité pour optimiser leurs performances d'exécution.

Mais ce faisant, elles augmentent aussi la charge du travail du compilateur. Au point que la compilation d'une application peut devenir extrêmement lente, ou même consommer tellement de RAM qu'elle en devient impossible.

Il faut alors optimiser les performances de compilation du code. Cette tâche est plus difficile qu'il n'y paraît au premier abord, et c'est ce qui a conduit au développement de crofiler, un outil d'analyse des performances de compilation basé sur le compilateur C++ clang.

Replay, YouTube
Github Crofiler, Présentation


14/03/2024 -10h : Calculer avec Sycl en C++ 20 sur CPU et GPU

Présenté par David Chamont
Sans entrer dans les détails techniques, nous verrons comment SYCL se positionne dans le paysage de la programmation hétérogène C++ : entre les premiers pas du standard C++, les performances de CUDA, et la bibliothèque Kokkos. Nous commencerons à examiner la promesse de SYCL de faciliter le portage de code entre les différentes architectures matérielles que sont les CPU, les GPU, et les FPGA. Enfin, nous présenterons le programme que nous proposons pour l'école de juillet.

Replay, YouTube
Présentation


21/03/2024 -10h : Fortran (langage, OpenACC)

Présenté par Vincent Lafage
FORTRAN, qui avec la bonne prononciation rime avec dinosaure, a été remplacé dans le plus grand silence par Fortran (90), au tournant du siècle. Sorti du ring par les langages de la bulle internet, ses descendants sont de retour sur le devant de la scène. Nous survolerons les capacités du Fortran moderne, mais aussi comment exploiter le parallélisme, la vectorisation et les GPU avec ce langage dédié au calcul, et son intégration dans les chaînes de développement logiciel : build, test unitaire. 

Replay, YouTube
Présentation

28/03/2024 -10h : Calculer sur GPU en C++ 20 avec NVC++ et CUDA

Présenté par Pierre Aubert
En C++, le calcul sur GPU a évolué drastiquement en 2020 lorsque NVidia a annoncé que son compilateur, nvc++, était capable de compiler un calcul en C++ 17 directement sur GPU sans que le développeur ne soit obligé de passer par des bibliothèques tierces (Sycl, Kokkos, etc). Depuis, nvc++ supporte également C++20 et Intel est entrée dans la course avec dpc++. Nous verrons dans ce webinaire comment calculer directement sur GPU en C++ 17 et C++ 20. Les points communs de cette méthode avec des approches plus classiques comme CUDA mais aussi leurs différences et la compatibilité avec l'approche C++ 17 standard pour CPU que nous avons vu dans un webinaire précédent.

Replay, YouTube
Présentation

 

04/04/2024 -10h : Bibliothèque de calcul Eve en C++ 20

Présenté par Joël Falcou

Les jeux d'instructions SIMD sont un must have de toutes les architectures de processeurs depis la fin des années 90. Hélas, leur utilisation manuelle ou au travers d'un auto-vectorisateur
laisse souvent à désirer. Nous allons ici présenter EVE, une bibliothèque d'aide à la vectorisation pour C++20 dont les objectifs sont :

  + de jouer le jeu des idiomes du C++ moderne
  + de fournir plus de 200 fonctions mathématiques pré-vectorisées.
  + de supporter Intel, ARM et PPC.
  + de s'intégrer dans des codes à bases d'algorithmes

Nous allons principalement présenter l'interface et les résultats atteignables avec EVE sur des exemples simples.

Replay, YouTube

11/04/2024 -10h : Calculer avec Numpy en Python

Présenté par  Alice Faure et Jean-Marc Colley

Python est un langage très largement utilisé dans la communauté scientifique pour sa simplicité d’utilisation. Cependant, le Python natif est loin des performances des langages compilés. Il existe toutefois des bibliothèques de calcul qui permettent de se rapprocher de ces performances. Dans ce webinaire, nous allons présenter les techniques de base pour calculer efficacement avec numpy sur CPU. Nous verrons également d’autres techniques à utiliser lorsque numpy ne suffit plus, notamment les bibliothèques de compilation à la volée comme Numba, et le multi-threading. 

Replay, YouTube
Présentation


18/04/2024 -10h : Calculer avec Rust sur CPU et GPU

Présenté par Hadrien Grasland

Durant le webinaire Gray-Scott du 29 février, nous avons vu sur quels plans Rust innove par rapport à son ancêtre C++, et pourquoi il peut être intéressant d'utiliser ce langage pour des tâches calculatoires. Si cet argumentaire vous a convaincu, il est maintenant temps de passer à l'action. Dans ce webinaire, nous allons donc voir comment, concrètement, on effectue divers travaux de calcul courants avec Rust, sur CPU et GPU. Ce qui sera le prétexte parfait pour aborder dans un deuxième temps la question essentielle du niveau de maturité des briques logicielles de l'écosystème de calcul Rust.

Replay, YouTube
Présentation


02/05/2024 -10h : Calculer sur CPU et GPU en Fortran avec NVfortran et OpenACC

Présenté par Vincent Lafage

Calculer sur CPU et GPU en Fortran avec NVfortran et OpenACC 
« Grandeur et misère de l'autoparallélisation » 
Après avoir survolé les sémillantes capacités de ce langage moderne qu’est Fortran post-90, nous allons mettre à l’épreuve les prétentions affichés par les compilateurs : 
vectoriser, paralléliser et gpuifier toute la concurrence que nous aurons su exprimer à travers les syntaxes modernes. Et éventuellement sans recourir aux directives pointilleuses d’OpenMP/OpenACC. 
L’exemple tiré du fond des âges, les trois petits photons, nous servira de tapis de course initiatique.

Replay
Présentation


16/05/2024 -10h : Python sur GPU : cunumerics / Legate / Tensorflow

Présenté par Alice Faure, Jean-Marc Collet et Nabil Garroum

Comment utiliser une carte GPU pour accélérer un calcul numérique avec Python? Lors de cette présentation nous allons examiner les possibilités offertes afin de vous guider vers la bibliothèque qui répond à vos besoins. Nous verrons les principes de base de chacune d'elles, et la future école Gray-Scott donnera une vision plus approfondie de leurs utilisations. Nous les présenterons par niveau d'intégration : pour le haut niveau, Nvidia CuNumeric, Intel DPNP, JAX, et PyTorch permettent de garder un code quasi identique à la version CPU. Pour le niveau intermédiaire, la bibliothèque CuPy permet un accès à des fonctionnalités numériques avancées, mais nécessite un code spécifique pour le GPU. Enfin, pour le bas niveau, les bibliothèques PyCUDA et Numba pour GPU fournissent les fonctionnalités de base sur les tableaux. Nous évoquerons également des outils de profilage associés.

Information de connexion

23/05/2024 - 10h : De CUDA à SYCL- Stratégies et Outils de Migration

Présenté par Joël Falcou

L'utilisation de SYCL ouvre de nombreuses perspectives pour la maintenance et l'évolution de code numérique sur accélérateurs. Néanmoins, aujourd'hui, de nombreuses bases de code utilisent massivement des outils propriétaires comme CUDA.


Dans cette présentation, nous allons  dresser un parallèle entre les éléments fondamentaux des deux technologies et voir comment cette transition peut être automatisée ou du moins grandement simplifié avec SYCLOMATIC.

06/06/2024 - 10h : Retour sur la conférence de Nvidia GTC 2024 - Rappel des événements précédents

Présenté par Pierre Aubert

Dans cet exposé, je présenterai brièvement les nouveautés de la GTC 2024 (Nvidia's GPU Technology Conference). Cette conférence a mis en lumière une grande varièté d'optimisations tant hardware que software qui rendent possible un nouveau passage à l'échelle en terme de calcul et de simulation. 

Ce webinaire est par conséquent bien plus long que les précédents et sera coupé en deux parties :

  • Une première partie résumera les avancées depuis 2020 en terme de hardware et softwares (le webinaire courant).
  • Une seconde partie présentera les mises à jour des technologies et leurs implications en terme de développement, de consommation électrique, d'architecture et bien entendu de calcul.

 

Cette première partie présentera les hardwares et sorfwares NVidia depuis la GTC 2020 jusqu'à la GTC 2023 ainsi que leurs retours d'expériences discutées lors de la GTC 2024. Cette présentation est l'occasion de se remémorer les différentes technologies annoncées lors des dernières GTC afin de mieux apréhender les évolutions apportées par la GTC 2024.

Information de connexion

13/06/2024 - 10h : Retour sur la conférence de Nvidia GTC 2024

Présenté par Pierre Aubert

Dans cet exposé, je présenterai brièvement les nouveautés de la GTC 2024 (Nvidia's GPU Technology Conference). Cette conférence a mis en lumière une grande varièté d'optimisations tant hardware que software qui rendent possible un nouveau passage à l'échelle en terme de calcul et de simulation. 

Cette conférence a mis en lumière une grande varièté d'optimisations tant hardware que software qui rendent possible un nouveau passage à l'échelle en terme de calcul et de simulation. 

Ce webinaire est par conséquent bien plus long que les précédents et sera coupé en deux parties :

  • Une première partie résumera les avancées depuis 2020 en terme de hardware et softwares.
  •  Une seconde partie présentera les mises à jour des technologies et leurs implications en terme de développement, de consommation électrique, d'architecture et bien entendu de calcul (le webinaire courant).

 

Ce webinaire est la suite directe de la première partie. Les nouveautés Hardware et Software annoncées lors que la GTC 2024 y seront présentées. Différentes méthodes de calcul sur GPU seront comparées ainsi que les mises à jour pour les langages C++, Fortran, Python et Rust et leur utilisation dans l'écosysteme NVidia.

Information de connexion