Dans cet article nous allons explorer l’ensemble de Mandelbrot. Le but ici est de se familiariser avec le développement C tout en mettant en place une version initiale d’un calcul relativement intensif. L’exemple retenu ici est le dessin de l’ensemble de Mandelbrot en reposant sur la petite bibliothèque de dessin PPM que nous avons précédement introduite. Ensuite, une fois le problème initial définit et une première implémentation réalisée, nous profilerons le programme pour identifier de potentielles optimisations. Enfin nous réaliserons une étude de scalabilité sur architecture KNL pour illustrer les métriques de performance HPC de base.
Dessiner en C : le format PPM
L’un des problème parallèle les plus simple est le traitement d’image. Afin de permettre la mise en place de ce type d’exemple, il faut se donner les moyen de générer des images en C. C’est le but de cet article qui va définir une petite bibliothèque de dessin basée sur le format PPM.
Les interfaces de GDB
Dans cet article nous présenterons diverses couches graphiques gratuites de GDB. Nous présenterons succintement leur installation suivie de quelques cas d’usage.
Les Bases de GDB
Dans cet article nous allons présenter l’utilisation basique du débogueur GDB. Nous commencerons par illustrer les différents modes de lancement avant de présenter les différentes commandes de base.
À la fin de ce tutoriel vous saurez:
- Lancer GDB sur votre programme
- Vous attacher à un programme en cours d’éxécution
- Explorer l’état d’un programme via l’invite de commande GDB
Profilage avec Callgrind
Callgrind est un outil de la famille de valgrind. Il permet de faire du profilage à grain assez fin. Cet outil est très portable et permet en combinaison avec l’outil Kcachegrind de visualiser de manière assez précise des profils de performance.
L’inconvénient principal de cet outil est son surcoût relativement important, il faut donc veiller à cibler un cas test de taille limitée et non un cas représentatif. Aprés avoir exposé le processus d’installation, nous allons présenter les processus de mesure puis comment les résultats peuvent être analysés.
Profilage avec Linux Perf
Dans ce tutorial, nous allons utiliser Linux-Perf pour collecter les données de performance d’une application parallèle. Notre but ici et de permettre simplement l’identification des points chauds d’un code donné, le tout en étant agnostique au runtime sous-jacent.
À la fin de ce module vous saurez:
- Collecter des données de performance avec Linux-perf
- Analyser ces données avec « perf report »
- Visualiser ces données avec « flamegraph »