Description

Les enjeux

Face au besoin croissant de puissance de calcul et à des applications numériques toujours plus complexes, que cette puissance de calcul soit fournie par des ordinateurs séquentiels ou parallèles, il est nécessaire de pouvoir mieux contrôler l'efficacité et la performance de nos applications. L’enjeu principal de cette école est d’être capable d’identifier les points critiques d'une application et de son environnement d'exécution pour, à l'aide d'outils adaptés, améliorer son fonctionnement et son utilisation.

Objectifs pédagogiques de l'école

Organisée en collaboration avec le Groupe Calcul, elle doit permettre d'acquérir une vision claire de la notion de performance d'un code logiciel, en terme d'environnement, d'architecture et d'application. L'objectif est d'apprendre à mesurer cette performance, d'identifier les bonnes pratiques d'optimisation et de se familiariser avec les principaux outils disponibles dans nos environnements. D'une durée de 4 jours, elle s'adresse principalement aux développeurs, mais intéressera également les ASR pour les aspects environnementaux et architecturaux.

Thèmes abordés

  • Enjeux et défis
  • Catégorisation des problèmes concernés
  • Optimisation des environnements
  • Optimisation des applications
  • Familiarisation avec les principaux outils de profilage
  • Optimisation en environnement multiprocesseurs et/ou multicoeurs
  • Optimisation des I/O et des accès réseaux

Public

Le public ciblé en premier lieu est celui des ingénieurs ou experts en développement et déploiement d'applications (impliqués dans le support aux expériences en Physique des Hautes Énergies). Cette école s'adresse également aux ASRs intéressés par la problématique et confrontés aux interrogations des développeurs.

Pré requis

  • Les participants devront savoir programmer en C/C++ pour profiter des TDs.
  • Il serait préférable qu'ils aient aussi des rudiments en matière d'architecture système.

Conséquences attendues

  • Transfert de méthodes et techniques
  • Rencontres et échanges entre l'IN2P3 et le groupe Calcul et au sein des groupes eux-mêmes
  • Identification de besoins en matière de formations complémentaires

Programme

lundi 06/02

14:30 15:30 Télécharger le support Pas de résumé disponible

INTRODUCTION TO PERFORMANCE ANALYSIS

par W. Jalby

15:30 16:30 Télécharger le support Pas de résumé disponible

OS IMPACT ON PERFORMANCE

par S. Valat

17:00 18:00 Télécharger le support Pas de résumé disponible

A QUANTITATIVE APPROACH TO PERFORMANCE OPTIMIZATION

par W. Jalby

mardi 07/02

08:45 12:15 Télécharger le support

Benchmarking: first step toward code optimization

par L. Saugé

Evaluate the peak performance of a system and the knowledge of the limitations/constraints of a particular architecture is the first step for the performance analysis of a code and therefore, toward code optimization. In this presentation, we study how to evaluate (or how to "benchmark") a high performance computing systems. We will review which hardware (and also software) elements composed such type of systems and for ea ch of them, how it can impact the performances of the code. And from these analyses we will find best practices the programmer concerned by the performance of his code.
14:00 17:30

Optimization in C & C++

par S. Binet

Télécharger le support support du cours
Télécharger le support support du TP
Understanding what are the costs of various C/C++ code constructs is paramount in eventually providing an application asymptotically reaching its full performance potential. This lecture will first briefly introduce performance concepts in the multicore/manycore landscape and how to detect and assess performance issues. A non-exhaustive list of various source code optimization techniques for C and C++ will follow, associated with their cost.

mercredi 08/02

08:45 12:15

Analysis and Optimization of the Memory Access Behavior of Applications

par J. Weidendorfer

Télécharger le support support du cours
Télécharger le support support du TP
The goal of this session is to understand how accessing memory on modern CPUs in the wrong way can slow down an application, and what can be done to make it faster. This will include a short introduction on how caches work in modern CPUs. Standard cache optimization strategies such as blocking and padding are described, using small example codes such as matrix multiplication and stencil codes. In the second part, tools are presented which are able to detect bad memory access behavior, using hardware performance counters as well as cache simulation for detailed analysis. The session ends with a hands-on part, demonstrating the use of the tools.
14:00 17:30 Télécharger le support

Description of analysis tools

par A. Charif Rubial

Static Performance Model :code quality and vectorization opportunities Application profiling from corse to fine grain : MIL Memory behavior analysis of applications Using hardware performance counters

jeudi 09/02

08:45 15:30

Studying the behavior of parallel applications and identifying bottlenecks by using performance analysis tools

par G. Markomanolis

Télécharger le support support du cours
Télécharger le support support du TP
Concerning the increase of the available number of the processors and the architecture complexity it becomes more difficult to understand how a parallel application is behaving. Many times a parallel application does not provide the expected speedup during the execution on many processors. TAU and Scalasca are two performance analysis tools that can help the user to identify performance bottlenecks. Each one provides some different tools in order to observe a problem that it can be caused by many different factors. Various aspects are covered, instrumenting, measurement either profiling or tracing with PAPI hardware counters, analysis and visualization. Moreover an introduction into two another tools will be given, the first one is the Score-P which is the next generation of the performance measurement infrastructure with the collaboration of the Scalasca, VampirTrace, TAU and some other teams. Finally, PerfExpert is a performance diagnosis tool which can provide detailed information about the causes of the bottleneck and in some cases to propose optimizations to alleviate the identified bottlenecks.
16:00 17:30

Optimisation des entrées/sorties pour les systèmes POSIX

par L. Tortay et E. Legay

Télécharger le support support du cours
Télécharger le support support du TP

Présentation/rappels de fondamentaux sur les moyens actuels de stockage persistent. Fonctions des systèmes POSIX (et Linux) pour les entrées/sorties disque & réseau.

Bonnes pratiques pour une utilisation efficace de ces fonctions (« quand, comment, pourquoi les utiliser »).

Présentation d'outils utiles pour déterminer le type d'entrée/sorties effectives d'un programme, en particulier SystemTap (pour Linux).

vendredi 10/02

08:00 11:30

Optimisation des entrées/sorties pour les systèmes POSIX

par L. Tortay et E. Legay

Télécharger le support support du cours
Télécharger le support support du TP

Présentation/rappels de fondamentaux sur les moyens actuels de stockage persistent. Fonctions des systèmes POSIX (et Linux) pour les entrées/sorties disque & réseau.

Bonnes pratiques pour une utilisation efficace de ces fonctions (« quand, comment, pourquoi les utiliser »).

Présentation d'outils utiles pour déterminer le type d'entrée/sorties effectives d'un programme, en particulier SystemTap (pour Linux).

Comité d'organisation

  • Romaric David (Unistra)
  • Loïc Gouarin (Lab. Maths U. Paris-Sud)
  • D. Chamont (LLR)
  • E. Legay (CSNSM)
  • P. Micout (IRFU)
  • A. Pérus (LAL)