Atelier Python avancé pour le calcul scientifique

Le langage Python est maintenant largement utilisé par la communauté scientifique et ce, dans de nombreux domaines. Un certain nombre de packages sont disponibles (NumPy, SciPy, ...) et permettent de réaliser rapidement des prototypes validant des algorithmes de calcul. Mais qu’en est-il du passage à l’échelle ? C’est-à-dire lorsque l’on a validé notre algorithme et que l’on veut maintenant s’en servir sur des millions voire des milliards d’inconnues. Est-ce que le seul usage de NumPy et de Scipy est suffisant ? Bien souvent, la réponse est non. Il est alors nécessaire de s’appuyer sur d’autres outils permettant de passer à des langages proches de la machines en conservant une certaine abstraction. Ces outils sont aujourd’hui nombreux.

Nous avons décidé lors de cet atelier de vous en présenter trois : Cython qui permet d’avoir un grain fin sur les optimisations ; Pythran et Numba qui permettent, à moindre coût, d’avoir de bonnes performances.

Cet atelier est un niveau avancé et s’adresse à des personnes ayant déjà une bonne compréhension de NumPy (stockage mémoire, manipulation des tableaux, …).


Organisateurs

- Loic Gouarin (LMO)
- Serge Guelton (Quarkslab)
- Konrad Hinsen (CBM)
- Xavier Juvigny (ONERA)
- Marc Poinot (SAFRAN)


Lieu

Amphi Charpak à Jussieu (Paris).


Horaires

Mardi 4 juillet 2017 : 9h - 17h30
Mercredi 5 juillet 2017 : 9h - 17h30
Jeudi 6 juillet 2017 : 9h - 17h30


Inscription

Les inscriptions pour cet atelier sont gratuites mais obligatoires et sont sujettes à validation par un test permettant d’évaluer votre niveau en NumPy.

Le nombre de participants est limité à 40 personnes.

Pour vous inscrire, suivez ce lien :

http://calcul.math.cnrs.fr/C3I/index.php?sid=41228&lang=fr


Programme

Mardi 4 juillet 2017

9h - 17h30  : Cython (Xavier Juvigny (ONERA))

Mercredi 5 juillet 2017

9h - 17h30  : Pythran (Serge Guelton (Quarkslab))

Jeudi 6 juillet 2017

9h - 17h30  : Numba (à venir)

Résumés

Cython : Xavier Juvigny

Cython est une extension du langage Python permettant soit d’optimiser des parties d’un module ou un script python soit de faciliter l’interfaçage d’une bibliothèque C ou C++ avec Python.

Utilisé comme optimiseur, Cython permet avec peu d’efforts de générer des modules Python écrits en C dont les performances sont proches d’un code écrit en pure C. Des modules sont proposés avec Cython permettant d’interfacer facilement un script Cython avec divers modules python tel que numpy. De même, Cython propose des scripts permettant de facilement faire appel à des fonctions ou des objets des bibliothèques standards C et C++ ( stdio, std ::vector, etc. ). Il est également possible de relâcher le GIL à l’intérieur d’un script Python pour profiter du multithreading via les threads C ou OpenMP.

Utilisé comme langage d’interface avec le C ou le C++, Cython propose divers mécanisme permettant de gérer les fonctions ( passage par pointeur ou valeurs ) ou les structures C, ainsi que les classes C++, les fonctions et les classes templates mais aussi les passages par références, etc. Tout cela demande d’organiser son module d’une façon propre et rigoureuse, ce qui sera également vu dans cette formation.

Enfin, des exercices seront proposés sur un code de traitement de l’image écrit en pure Python utilisant numpy et scipy, montrant la puissance de Cython pour optimiser un code Python et la facilité d’interfacer une petite bibliothèque C avec Cython.

Pythran : Serge Guelton

Pythran est un compilateur pour un DSL embarqué dans Python, spécialisé pour le calcul scientifique, qui se veut le moins intrusif possible sur la base de code existante.

Inutile de préciser le type de chaque variable ou de réécrire les appels aux fonctions numpy à la main (même si cela reste possible) : idéalement, une fois un noyau de calcul identifié, celui-ci est isolé dans un module, un unique commentaire de type est ajouté et Pythran est capable de le traduire en un code natif, qui n’utilise plus la libpython pour faire un calcul équivalent. Et qui relâche le GIL si le code a besoin d’être appelé dans un contexte multi-threadé.

Le code python d’origine est toujours interprétable, ce qui permet de prototyper son application en pure Python, et d’accélerer les fonctions gourmandes en ressources CPU une fois le prototype validé, sans étape de conversion coûteuse en temps de développement.

Cette promesse sera vérifiée sur plusieurs cas pratiques après une introduction rapide aux différents concepts nécessaires à une bonne utilisation de pythran.

Numba : à venir


Accueil | Contact | Plan du site | | Statistiques du site | Visiteurs : 620 / 438161

Suivre la vie du site fr  Suivre la vie du site Présentation du Groupe Calcul  Suivre la vie du site Formations / Ecoles   ?

Site réalisé avec SPIP 3.0.17 + AHUNTSIC

Creative Commons License