0% ont trouvé ce document utile (0 vote)
18 vues39 pages

Modèles de composants pour HPC

Transféré par

Ulrich Ngapmen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
18 vues39 pages

Modèles de composants pour HPC

Transféré par

Ulrich Ngapmen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

High Performance Computing

Modèles de composants pour les applications HPC

NGAPMEN Ulrich Bolan

Facultés de Sciences
Département de Mathématiques et Informatique
Université de Dschang

October 23, 2024

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 1 / 39


Table de matières

1 Introduction

2 Architecture matérielle des systèmes HPC

3 Paradigmes et modèles de programmation

4 Programmation par composition

5 Programmation parallèle par composition

6 Exemple de modèle de composants


7 Low Level component : Un modèle de composants minimaliste pour le
HPC

8 Conclusion

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 2 / 39


Introduction

Dans un monde où la demande en calcul intensif explose, les systèmes de


High Performance Computing (HPC) deviennent cruciaux pour plusieurs
domaines. Ces systèmes, composés de milliers de cœurs de calcul, exigent
une efficacité maximale pour exploiter pleinement leur potentiel. Comment
concevoir des modèles de composants logiciels capables de répondre aux ex-
igences extrêmes en termes de performance, de modularité, et de portabilité
dans les systèmes HPC modernes ?

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 3 / 39


Architecture matérielle des systèmes HPC

Les architectures à mémoires distribuée et partagée sont deux modèles


fondamentaux dans la conception des systèmes de traitement parallèle.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 4 / 39


Architecture matérielle des systèmes HPC
Architecture UMA (Uniform Memory Access)

Architecture UMA
NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 5 / 39
Architecture matérielle des systèmes HPC
Architecture SMP (Symmetric Multi-Processing)

Architecture SMP

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 6 / 39


Architecture matérielle des systèmes HPC
Interaction, Architecture à mémoire partagée

En mémoire partagé, la programmation à base des verrous est l’une des


approches les plus fréquemment utilisées dans les applications.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 7 / 39


Architecture matérielle des systèmes HPC
Architecture NUMA (Non-Uniform Memory Access)

Exemple d’architecture NUMA


NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 8 / 39
Architecture matérielle des systèmes HPC
Processeurs multicoeurs et hiérarchie mémoire

Exemple de processeur contenant 24 cœurs et 03 niveaux de cache


NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 9 / 39
Architecture matériel des systèmes HPC
Accélérateurs de calcul

Exemple d’Architecture NUMA hétérogène contenant deux processeurs et


une carte graphique
NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 10 / 39
Architecture matérielle des systèmes HPC
Architectures à mémoire distribuée

Exemple d’Architecture à mémoire distribuée


NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 11 / 39
Architecture matérielle des systèmes HPC
Interaction, Architectures à mémoire distribuée

Dans ce paradigme, les fils d’exécution communiquent uniquement en en-


voyant et en recevant des messages.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 12 / 39


Paradigmes et modèles de programmation

Parallélisme de données
Elle consiste à distribuer des données sur des fils d’exécution qui réalisent
tous une même opération.

Parallélisme de tâches
Le parallélisme de tâches consiste à diviser un calcul d’une application en
un sous-ensemble de calculs appelé tâches.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 13 / 39


Paradigmes et modèles de programmation
Parallélisme de données

Le partitionnement de données consiste à diviser les données d’une


application en sous ensemble de données plus petit appelé fragment.

Surdécomposition.

Dans beaucoup d’applications HPC, le partitionnement forme des


fragments contigus et de taille quasi homogène.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 14 / 39


Paradigmes et modèles de programmation
Parallélisme de tâches

Dépendance de contrôle entre deux tâches t1 et t2 ;

Dépendance de données entre t1 et t2.

On appelle Ordonnancement, le processus visant à affecter à chaque tâches


les ressources disponibles tout en respectant les dépendances entre les tâches.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 15 / 39


Paradigmes et modèles de programmation
Modèles de programmation parallèle : MPI

Le modèle de programmation MPI (Message Passing Interface) est une


norme de passage de messages définissant la syntaxe et la sémantique des
opérations de communication entre les fils d’exécution.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 16 / 39


Paradigmes et modèles de programmation
Modèles de programmation parallèle : Fork-Join

Les modèles Fork-Join consistent à diviser, à un instant donné, un fil d’exécution


en plusieurs. Les fils d’exécution sont ensuite fusionnés afin d’en reformer
un unique.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 17 / 39


Programmation par composition

Crise logicielle : Génie logiciel

De la programmation structurée aux modèles de composants

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 18 / 39


Programmation par composition
De la programmation structurée aux modèles de composants : Programmation structurée

Ce paradigme consiste à utiliser les structures de contrôle telles que les


boucles, les conditions et même les sous-routines.

Problème
Comment décomposer et organiser les routines d’une application
efficacement.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 19 / 39


Programmation par composition
De la programmation structurée aux modèles de composants : Programmation orientée
objet

Dans ce paradigme de programmation, une application est un ensemble


d’objet qui interagissent. Deux formes de relations entre les objets : Com-
position et Héritage.

Problème
La composition : les dépendances entre les objets ne peuvent être
déterminées que par une analyse souvent profonde et fastidieuse du code
source définissant les objets.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 20 / 39


Programmation par composition
De la programmation structurée aux modèles de composants : Modèle de composants

Un modèle de composants définit ce que sont les composants et par quel


moyen les composer. Un langage qui définit comment assembler les com-
posants est un langage d’assemblage.

Parmi certains modèles existants, certains séparent la phase de conception


de composants de la phase d’assemblage durant laquelle ils sont composés.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 21 / 39


Programmation par composition
De la programmation structurée aux modèles de composants : Notions importantes

La programmation par composition est une méthode de programma-


tion utilisant la composition comme un moyen d’améliorer la séparation des
préoccupations et la réutilisation des logiciels.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 22 / 39


Programmation par composition
De la programmation structurée aux modèles de composants : Notions importantes

Nous définissons une interface, comme une abstraction décrivant un point


d’interaction qui dispose des contraintes d’utilisations.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 23 / 39


Programmation par composition
De la programmation structurée aux modèles de composants : Modèle de composants

Les boites noires sont des composants déployables indépendamment.


Cette caractéristique favorise ainsi la séparation des préoccupations.

Les dépendances entre composants ne sont pas entièrement contrôlées


par leurs concepteurs, qui définissent uniquement des interfaces.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 24 / 39


Programmation par composition
De la programmation structurée aux modèles de composants : Notions importantes

La cohésion est une métrique mesurant la capacité d’un élément applicatif


à remplir une unique fonction logique.

Il est possible d’accroı̂tre la cohésion des modules applicatifs en séparant


les préoccupations issues d’une même applications.

Le couplage est une métrique mesurant l’interdépendance entre les éléments


applicatifs. Un couplage fort entre deux modules signifie que les modules
sont fortement liés ensemble.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 25 / 39


Programmation par composition
Formes de composition

Use-provide

Flux de données

Flux de travaux

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 26 / 39


Programmation par composition
Formes de composition : Use-provide

La composition use-provide est l’une des formes de composition les plus


récurrentes dans les modèles de composants. Elle permet aux composants
d’exposer des interfaces appelées port provide fournissant des services et des
interfaces nommées port use qui requièrent des services fournis par d’autre
composants. Les ports use et provide peuvent être typés.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 27 / 39


Programmation par composition
Formes de composition : Flux de données

Dans les modèles de composants utilisant cette approche, des interfaces de


sorties produisent des flux de données et des interfaces d’entrée consomment
un flux de données. Le port d’entrée et de sortie peuvent être typé. Le type
des ports inclut généralement un type structuré de données.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 28 / 39


Programmation par composition
Formes de composition : Flux de travaux

Les modèles de composants basés sur les flux de travaux incluent les ap-
proches basées sur les flux de données et les étendent afin d’y intégrer des
connecteurs et des structures de contrôle telles que des conditions ou des
boucles. Ces modèles permettent généralement aux composant d’exposer
des interfaces d’entrée et de sortie. Certains modèles dotent les composants
d’interface de contrôle permettant de déclencher des traitements sur un
autre composant sans transmettre les données.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 29 / 39


Programmation parallèle par composition
Formes de composition de codes parallèles

L’approche la plus simple pour composer des codes parallèles dans les
modèles de composants consiste à intégrer le parallélisme dans l’implémentation
des composants, sans le rendre visible dans leurs interfaces. Cela permet de
remplacer facilement une implémentation parallèle par une autre, de manière
transparente.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 30 / 39


Programmation parallèle par composition
Formes de composition de codes parallèles : Use-provide parallèle

La composition use-provide dans un contexte parallèle peut être réalisée


en appliquant cette méthode sur chaque élément parallèle individuellement.
Cependant, bien que cette approche soit aussi expressive qu’en contexte
séquentiel, elle limite la composition de codes parallèles, surtout lorsque ces
codes utilisent des niveaux de parallélisme différents ou interdépendants, ce
qui est courant en HPC.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 31 / 39


Programmation parallèle par composition
Formes de composition de codes parallèles : Flux de données et de travaux

FlowVR est un exemple de modèle de composants à base d’interfaces de flux


de données qui offrent des mécanismes pour composer des codes parallèles.

1 Put : envoie d’un message sur un port de sortie ;


2 Get : récupération du message le plus ancien sur un port de sortie ;
3 Wait : Attente des données sur un port d’entrée.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 32 / 39


Programmation parallèle par composition
Formes de composition de codes parallèles : Partage de données

Les modèles de composants supportant le partage de données permettent


de créer des interfaces pour fournir et accéder à des données partagées,
exprimant ainsi la dépendance entre composants. Contrairement aux ap-
proches de flux de données, où plusieurs données transitent, une donnée
unique est partagée simultanément par plusieurs composants, ce qui pose
des problèmes d’accès concurrent. Les interfaces des modèles de com-
posants incluent donc des mécanismes pour contrôler cet accès concurrent.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 33 / 39


Exemple de modèle de composants
Common Component Architecture (CCA)

Diagramme du modèle de conception Use-Provide par CCA


NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 34 / 39
Exemple de modèle de composants
GridCCM(CORBA Component Model)

Aperçu de l’architecture CCM


NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 35 / 39
Exemple de modèle de composants
GCM (Grid Component Model)

GCM, extension de Fractal, propose des interfaces dérivées du use-provide


séquentiel pour diffuser et rassembler des appels de méthodes. Un com-
posite parallèle peut inclure des instances de composants séquentiels, et les
interfaces de diffusion transforment un appel de méthode unique en plusieurs
appels appliqués aux ports des instances après avoir traversé la membrane
du composite.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 36 / 39


Low Level component : Un modèle de composants
minimaliste pour le HPC (L²C)
Introduction

L²C est à la fois une extension du processus de compilation modulaire


et un modèle de composants de bas niveau proche du système.
Chaque composant est compilé en une bibliothèque, puis instancié et
connecté à l’exécution via un fichier de description d’assemblage.
L2C permet une composition à travers :
l’appel de procédures natives C++,
l’appel de procédure à distance via CORBA,
le passage de messages via MPI.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 37 / 39


Low Level component : Un modèle de composants
minimaliste pour le HPC (L²C)
Caractéristiques

Les composants L²C fournissent des services via des ports provide et
en utilisent via des ports use.
La communication entre les composants se fait par l’appel de
procédures sur ces ports.
Services déclarés en tant que classe abstraite C++ ou interface
CORBA.
Ports MPI permettent de partager des communicateurs entre
instances.
Les composants sont des classes C++ avec annotations pour nom,
ports, propriétés.
Assemblage décrit par un fichier XML (LAD) qui spécifie les
instances, leur configuration, connexions, et processus associés.

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 38 / 39


Conclusion

CCA, GridCCM, GCM, et L²C


Une meilleure modularité, réutilisation, et flexibilité, essentielles dans
le développement de logiciels pour des systèmes de calcul à grande
échelle
Comment améliorer les mécanismes de communication et
d’interopérabilité dans les modèles de composants pour le HPC afin
de faciliter la composition dynamique tout en optimisant les
performances réseaux et réduisant la latence ?

NGAPMEN Ulrich Bolan (UDS) Modèles de composants October 23, 2024 39 / 39

Vous aimerez peut-être aussi