Programme détaillé

Lundi 8 octobre 2012

Mardi 9 octobre 2012

Mercredi 10 octobre 2012

Jeudi 11 octobre 2012

Vendredi 12 octobre 2012


Lundi 8 octobre 2012


9h-10h30 : Pourquoi l’hybride ?

    Intervenant : E. Petit (Université Versailles St Quentin)

supports

Au milieu de la dernière décennie, les architectures des processeurs ont pris un très net virage. Pour des raisons de consommation, de surface, de complexité et d’efficacité, la progression des architectures mono-coeurs a ralenti puis a laissé la place aux architectures multi-coeurs. Afin d’en obtenir les meilleures performances, il est nécessaire de faire apparaître du parallélisme de tâches. Dans le HPC cela se traduit par l’utilisation de schémas de programmation hybride tel que MPI+OpenMP.
Par ailleurs, parmi les pistes explorées pour contourner le ralentissement des architectures mono-coeurs, des solutions d’accélérateurs matériels ont été étudiées. Les efforts de compatibilité aux normes (flottant en particulier), les efforts sur les environnements de programmation et le support d’un marché grand public ont permis aux GPUs de s’imposer, en particulier le couple NVIDIA/CUDA. Leurs architectures massivement parallèles présentent un paradigme nouveau pour les développeurs, les obligeant à retravailler en profondeur leurs applications.
Dans ce cours, nous allons aborder les mécanismes architecturaux de base permettant de comprendre l’apport des multi-coeurs et les différences fondamentales entre CPU et GPU. Nous verrons ensuite comment et pourquoi ces architectures impactent les applications. Enfin nous aborderons les architectures nouvelles et les perspectives pour l’avenir.

10h30-11h : Pause

11h-12h30 : Pourquoi l’hybride ? (suite)

12h30-14h : Repas

14h-15h30 : Un exemple de A à Z

    Intervenant : M. Tajchman

supports

Le cours commencera par une introduction sur les méthodes physiques,
numériques et algorithmiques mises en place dans un code 2D hydrodynamique.
On présentera ensuite des versions construites en utilisant différentes
méthodes de parallélisation : multi-threads (OpenMP, TBB), multi-processus
(MPI), calcul sur GPU (Cuda), ainsi que des combinaisons de ces techniques.
L’examen de ces versions ainsi que des exemples simples illustreront des
conseils sur les choix de parallélisation, l’importance de l’organisation
des accès mémoire, le recouvrement calcul-communications, etc.

15h30-16h : Pause

16h-17h30 : Un exemple de A à Z (suite)


Mardi 9 octobre 2012


9h-10h30 : Un exemple de A à Z (suite)

10h30-11h : Pause

11h-12h30 : Un exemple de A à Z (suite)

12h30-14h : Repas

14h-15h30 : Un exemple de A à Z (suite)

15h30-16h : Pause

16h-17h30 : Un exemple de A à Z (suite)


Mercredi 10 octobre 2012


9h-10h30 : Placement des processus

    Intervenant : L. Saugé (BULL)

supports

Le caractère "fortement" NUMA des architectures many/multi cores en général, nous oblige à nous poser la question de la stratégie du placement des processus dans ces environnements.
En effet, dans ce contexte, l’un des premiers principes d’optimisation (de la performance) des codes est d’assurer aux processus la localité des accès mémoires et autres ressources.

Le but de ce cours est de d’appréhender et comprendre les contraintes qu’impose ces architecture sur les performances des codes "parallèles" au sens large, que ce soit en mode intra ou inter-noeuds.

Il sera fait quelques rappels sur les architectures des machines multi/many cores (cpu, mémoires) et il sera abordé en détails les moyens d’assurer le placement des processus afin d’optimiser les performances des codes.

Divers aspects pratiques seront abordés, entre autre :

  • effets NUMA,
  • les outils standards et la gestion par l'OS du placement des processus (taskset, numactl, cpuset...),
  • les APIs disponibles (libnuma, posix),
  • l’interaction avec les divers acteurs logiciels (gestionnaires de batchs, MPI, runtime OpenMP et pthreads),
  • l'accès aux ressources tels que les accélérateurs ou les réseaux d'interconnexion,
  • les benchmarks élémentaires des différents composants hardwares.

10h30-11h : Pause

11h-12h30 : Placement des processus (suite)

12h30-14h : Repas

14h-15h30 : Parallel Codes and High Performance Computing : Massively parallelism and Multi-GPU

    Intervenant : L. Genovese (CEA)

supports

In this presentation, we will start by revisiting the main aspects of evolution of parallel architectures from three points of view :
Machine construction, code developments and code usage.
In particular, we will see how these facts will influence the conception of High Performance Computing codes.
We will focus on the aspects of combining CPU and GPU acceleration in a massively parallel environments.

In particular, we will see how hybrid codes conceptions influence the interpretation of performance results by the user.
We will provide some examples which will show that performance benchmarking is a multicriterion evaluation process : the application should be correctly dimensioned on the computing machine.

15h30-16h : Pause

16h-17h30 : Parallel Codes and High Performance Computing : Massively parallelism and Multi-GPU (suite)


Jeudi 11 octobre 2012


9h-10h30 : MPC

    Intervenant : M. Pérache et S. Valat (CEA)

supports

L’évolution actuelle des architectures vers le multi/many-core marque la fin du modèle Full-MPI au profit d’une approche MPI + X (X étant un modèle de threads/tâches). Dans ce contexte, le CEA et le laboratoire Exascale ont développé le support exécutif MPC qui a pour objectif d’unifier les modèles de programmation MPI et OpenMP/PThread au sein d’un même runtime. Cette unification permet d’optimiser l’implémentation MPI pour tirer parti de la présence d’autres threads et vis-versa pour OpenMP. Dans le même temps, l’arrivée des multi-cœurs a pour effet d’amorcer la diminution de la quantité de mémoire disponible par cœur. Dans ce contexte, MPC propose des extensions de gestion des données (HLS, allocateur mémoire, ...) pour les "legacy codes" qui permettent de réduire l’empreinte mémoire du support exécutif, mais aussi du code utilisateur en factorisant les données entre les processus MPI par exemple.

10h30-11h : Pause

11h-12h30 : MPC (suite)

12h30-14h : Repas

14h-15h30 : MPC (suite)

15h30-16h : Pause

16h-17h30 : Programmation par directives pour le calcul hybride : HMPP et OpenACC

    Intervenant : F. Lebeau (CAPS Entreprise)

supports

Cette présentation fournira aux participants les bases et la méthodologie pour porter une application vers les systèmes hétérogènes. Après une introduction aux architectures massivement parallèles, les participants apprendront à optimiser efficacement une application avec les jeux de directives HMPP et OpenACC : notamment en ce qui concerne les transferts de données et les optimisations de calculs. Cette présentation s’accompagnera d’une description du fonctionnement d’HMPP Workbench développé par CAPS entreprise et de ses fonctionnalités.


Vendredi 12 octobre 2012


9h-10h30 : Programmation par directives pour le calcul hybride : HMPP et OpenACC (suite)

10h30-11h : Pause

11h-12h30 : Programmation par directives pour le calcul hybride : HMPP et OpenACC (suite)

12h30-14h : Repas


titre documents joints

19 octobre 2012
info document : GZ
4.1 Mo

19 octobre 2012
info document : PDF
4.4 Mo

12 octobre 2012
info document : GZ
4.5 Mo

11 octobre 2012
info document : TGZ
2.3 Mo

11 octobre 2012
info document : PDF
1.6 Mo

10 octobre 2012
info document : PDF
2.9 Mo

10 octobre 2012
info document : PDF
1.8 Mo

Accueil | Contact | Plan du site | | Statistiques du site | Visiteurs : 1441 / 403303

Suivre la vie du site fr  Suivre la vie du site Présentation du Groupe Calcul  Suivre la vie du site Formations / Ecoles  Suivre la vie du site École "Programmation hybride : une étape vers le (...)   ?

Site réalisé avec SPIP 3.0.17 + AHUNTSIC

Creative Commons License