61
Info0604 Programmation multi-threadée Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 18 janvier 2017 Cours 1 Présentation du module Organisation Introduction

Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604Programmation multi-threadée

Pierre DelisleUniversité de Reims Champagne-Ardenne

Département de Mathématiques et Informatique18 janvier 2017

Cours 1

Présentation du moduleOrganisationIntroduction

Page 2: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 2

Pierre Delisle

● Maître de Conférences du département de Math-Info de l'URCA

● Mail– [email protected]

● Site Web– http://cosy.univ-reims.fr/~pdelisle

Page 3: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 3

Plan du cours

● Description du module– Objectifs, pré-requis

– Organisation

● Introduction– Parallélisme ?

– À la recherche du parallélisme

– Architectures

– Langages de programmation

Page 4: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 4

Objectifs du module

● Objectif général– Acquérir des connaissances théoriques et pratiques

de base en programmation multi-core

● Compétences spécifiques– Parallélisation mémoire partagée d'applications

séquentielles

– Conception d'applications parallèles

– Programmation pThreads, Java Threads

Page 5: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 5

Pré-requis

● Info0301 : Programmation en langage C● Info0302 : Systèmes d'exploitation● Moi0304/Info0305 : Linux

● Info0401 et Info0501 sont bons à connaître aussi !

Page 6: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 6

Organisation

● CM : 5 x 2 heures– Mercredi 14h00-16h00

● TD : 5 x 2 heures– S6O6 + S6O5b : Mardi 14h00-16h-00

– S6O7 : Mercredi 8h00-10h00

– À partir de la semaine 4

● TP : 5 x 2 heures– À partir de la semaine 5

– EDT bientôt disponibles sur le bureau virtuel...

Page 7: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 7

Évaluation

● Projet : 40 %– Application, rapport et soutenance orale

● DST : 60 %

Page 8: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 8

Structure du module

● Introduction au parallélisme– Architectures, Algorithmes, Programmation

● Algorithmique parallèle– Parallélisation, conception

● Programmation multi-threadée– Processus et threads

– Programmation asynchrone

– Pthreads (mutex, variables de condition, ...)

– Modèles de programmation multi-thread

Page 9: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 9

Introduction au parallélisme

Qu'est-ce que le parallélisme ?À la recherche du parallélisme...

Architectures parallèlesLangages de programmation

Page 10: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 10

Exercice 1

Comptables.....

Page 11: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 11

Les limites du mono-processeur

● L'augmentation de la vitesse d'un processeur devient de plus en plus coûteuse et les gains sont de plus en plus limités

● Pourtant, les besoins ne diminuent pas !● Une solution

– dupliquer les unités de calcul

● Difficultés– Dégager la concurrence des codes d'application

– Gérer les communications/accès mémoire

Page 12: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 12

Qu'est-ce que le parallélisme ?

● Exécution d’un algorithme en utilisant plusieurs processeurs plutôt qu’un seul

● Division d’un algorithme en tâches pouvant être exécutées en même temps sur des processeurs différents

● Le but : réduire le temps de résolution d’un problème un utilisant un ordinateur parallèle

● 3 niveaux d’abstraction– Architectures, Algorithmes, Programmation

Page 13: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 13

Architectures parallèles

● Ordinateur parallèle : ordinateur comportant plusieurs processeurs et supportant la programmation parallèle

● Plusieurs types d’architectures– Distribuées

– Centralisées

● Modèles d’architecture : simplification du fonctionnement des ordinateurs parallèles– Taxonomie de Flynn

Page 14: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 14

Taxonomie de Flynn

● SISD : Single Instruction Single Data– Ordinateurs séquentiels

● SIMD : Single Instruction Multiple Data– Tableaux de processeurs (arrays)

– Ordinateurs vectoriels en pipelilne

● MISD : Multiple Instruction Single Data– Tableaux systoliques (systolic array)

● MIMD : Multiple Instruction Multiple Data– Multiprocesseurs et Multi-Ordinateurs

Page 15: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 15

Algorithmique parallèle

● Approches de résolution de problèmes dans un contexte d’exécution parallèle

● Modèles algorithmiques : contextes d’exécution parallèle simplifiés pour faciliter la conception– PRAM

● Analyse théorique de la performance

Page 16: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 16

Programmation parallèle

● Programmation dans un langage permettant d’exprimer le parallélisme dans une application réelle

● Différents niveaux d’abstraction possibles● La parallélisation automatique serait la solution

idéale, mais c’est très difficile● La façon de programmer n’est pas

indépendante de la machine utilisée

Page 17: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 17

Bref historique du parallélisme

● …-1970 : Accessible presque uniquement aux gouvernements (défense), très coûteux

● 1970 – 1980 : Grosses entreprises (pétrole, automobile)

● 1980 – 1990 : premières machines parallèles « abordables » (microprocesseurs, VLSI)– Ordinateurs parallèles très performants, mais très

peu flexibles

– PROBLÈMES : programmation, portabilité

Page 18: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 18

Bref historique du parallélisme (suite)

● 1990 - 2000 : Machines basées sur le regroupement de PC répandus commercialement (Beowulf)

● 2000 - … : SMP, clusters, CC-NUMA, Grilles de calcul

● Depuis quelques années : processeurs multi-coeur

Page 19: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 19

Le parallélisme aujourd'hui

● Constats– Le parallélisme devient de plus en plus accessible

– Les environnements de développement deviennent de plus en plus conviviaux

● Cependant...– Il reste du travail à faire

Besoin d'intelligence ! Besoin de solutions logicielles performantes et portables

Page 20: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 20

Vue d'ensemble du calcul parallèle du début des années 2000

Architectures concrètes

SMP CC-NUMA Myrinet ATM

Cluster

Distributed Shared Memory (DSM)

Mémoire partagée (Shared memory)

Passage de messages(Message passing()

Threads

Pthreads Java Threads OpenMP MPI PVM

Applications

Page 21: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 21

Enjeux importants du parallélisme

● Situation idéale : transparence– Le système dégage le parallélisme à partir d’un

programme séquentiel

– Idéal, mais très difficile

● Situation à éviter : multiplicité inutile– Coûts de conception/développement importants

● Compromis nécessaire entre la facilité de conception/développement et la performance

● Favoriser la portabilité des applications

Page 22: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 22

À la recherche du parallélisme...

Graphe de dépendanceParallélisme de donnéesParallélisme de tâchesParallélisme en pipeline

Page 23: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 23

Graphe de dépendance

● Permet de représenter visuellement le parallélisme d’un algorithme (exemple)

● Sommet = tâche● Arc = Relation de dépendance

A

B

D E

GF

C

Page 24: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 24

Parallélisme de données

● Présent lorsque des tâches indépendantes appliquent la même opération sur différents éléments d’un ensemble de données

Pour i = 1 à 100

Lire (b[i], c[i])

Pour i = 1 à 100

a[i] = b[i] + c[i]

Pour i = 1 à 100

Écrire (b[i], c[i])

A

B B B

C

A

B

C

Page 25: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 25

Parallélisme de tâches

● Présent lorsque des tâches indépendantes appliquent des opérations différentes sur des données (différentes ou non)

a = 2

b = 3

c = 3

m = (a + c) / 2

s = (a2 + b2) / 2

v = s – m2

Graphe de dépendance ?

Page 26: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 26

Parallélisme en pipeline

● Diviser un algorithme strictement séquentiel en phases

● Résoudre plusieurs instances de problèmes à la chaîne

● La sortie (output) d’une phase représente l’entrée (input) de la phase suivante

Sablage Peinture Cirage S P C

S P C

S P C

S P C

Parallélisme

Page 27: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 27

Exemple 1

● Entreprise d'entretien ménager...

Page 28: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 28

Architectures parallèles

Multi-ordinateursMultiprocesseurs

Page 29: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 29

Multi-ordinateur

● La mémoire est physiquement distribuée entre les processeurs

● Logiquement, espaces d'adressage disjoints● Chaque processeur n'a accès qu'à sa mémoire

locale● Interactions entre processeurs effectuées par

passage de messages● Clusters, réseaux de stations, ...

Page 30: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 30

Multi-ordinateur

● La machine parallèle est composée de plusieurs ordinateurs possédant– Un système d'exploitation

– Des programmes

– Un point d'entrée

UtilisateurRéseau d’interconnexion

Ordinateur

Ordinateur

OrdinateurMulti-ordinateur

Ordinateur

Ordinateur

Ordinateur

Utilisateur

Page 31: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 31

Multiprocesseur

● Ordinateur comprenant plusieurs processeurs● Mémoire partagée● Les caches réduisent la charge sur le bus et/ou

la mémoire● Les processeurs communiquent par des

lectures/écritures sur des variables en mémoire partagée (physiquement ou virtuellement)

● SMP, Multi-coeur, ...

Page 32: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 32

Multiprocesseur centralisé/distribué

Centralisé Distribué

Partage physique Partage Virtuel

Cache

CPU

Cache

CPU

Cache

CPU

Bus

Mémoire principale

Réseau d’interconnexion

Cache

CPU

Mémoire

E/S

Cache

CPU

Mémoire

E/S

Entrées /Sorties

Page 33: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 33

Architecture multi-coeur

● Processeur → au moins 2 unités de calcul● Augmentation de la puissance de calcul sans

augmentation de la fréquence d'horloge– Réduction de la dissipation thermique

● Augmentation de la densité– Comme les coeurs sont sur le même support, la

connectique reliant à la carte mère ne change pas

Page 34: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 34

Exemples de processeurs multi-coeur

● Architectures Quad-Core

Page 35: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 35

Architecture des caches

Page 36: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 36

Partage des caches

● Pas de partage de caches– Pas de contention entre les unités de calcul

– Communication et migration plus coûteuses Passage systématique par la mémoire centrale

● Partage du cache– Communication plus rapide entre unités de calcul

– Migration plus facile → on ne passe pas par la mémoire centrale

– Problème de contention au niveau des caches

– Problème de cohérence de cache !

Page 37: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 37

Émergence d'une nouvelle architecture : les GPU

● GPU : Graphic Processor Unit● Architecture massivement parallèle● Traditionellement utilisé pour le calcul

graphique● On commence à les utiliser pour le calcul

« générique »– API CUDA → Nvidia

– API ATI Stream → ATI

– API générique → OpenCL

Page 38: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 38

Architecture GeForce 8800

Page 39: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 39

Taille des ordinateurs parallèles

● « Petits » ordinateurs parallèles– 2 < Nombre de processeurs < 64

– Typiquement de type Multiprocesseurs (SMP et multi-core)

– Vue globale de la mémoire, cohérence de cache

● « Grands ordinateurs parallèles »– 64 < Nombre de processeurs < plusieurs centaines

– Typiquement de type Multi-ordinateur

– Souvent des clusters de SMP

Page 40: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 40

Romeo I (2002)

● SMP 24 X UltraSparc III 900 Mhz● 24 Go RAM● 210 Go d'espace disque

Page 41: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 41

Romeo II (2007)

● Centre de calcul régional Champagne-Ardenne● 8 noeuds de calcul● Noeuds SMP de 4 à 16 processeurs

– Procs 1.6 Ghz Dual-core (8 à 32 coeurs par noeud)

● Entre 16 Go et 128 Go RAM par noeud● 20 disques de 146 Go chacun (2.9 To)● Coût ?

– Matériel, locaux, climatisation, support, ..., ..., ...

Page 42: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0802 Cours 1 42

Romeo II (2007)

Page 43: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 43

Architecture Romeo II

Page 44: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0802 Cours 1 44

Clovis – Romeo III (2010)

● 41 noeuds de calcul– 39 noeuds : 12 coeurs – 24 Go RAM

– 2 noeuds : 32 coeurs – 64 Go RAM

– Processeurs 2.6 Ghz Quad-core

● 532 coeurs et 1,064 To de mémoire au total● 10 To de disque● 1 noeud dédié GPGPU (2 cartes Nvidia C2050)

Page 45: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0802 Cours 1 45

Clovis – Romeo III (2010)

Page 46: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0802 Cours 1 46

Romeo IV (2013)

● 130 nœuds de calcul– 16 cœurs de calcul par nœud

– 2 accélérateurs GPU par nœud

– 32 Go de mémoire par nœud

● 245 To de disque

Page 47: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 47

Programmation parallèle

Mémoire distribuéeMémoire partagée

Page 48: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 48

Programmation mémoire distribuée

● Modèle à passage de messages– Processeurs attribués à des

processus distincts

– Chaque processeur possède sa propre mémoire

– Communications par envois et réception de messages

● Languages– PVM, MPI

Page 49: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 49

Exemple de programme C/MPI

#include <stdio.h>#include <mpi.h> /*bibliotheque MPI*/int main(int argc, char *argv[]) { int i; int id; int val; int somme;

MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &id); MPI_Comm_size(MPI_COMM_WORLD, &p); val = id + 1; MPI_Reduce(&val, &somme, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (id == 0) { printf("La reduction des valeurs donne %d\n", somme); } MPI_Finalize(); return 0;}

Page 50: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 50

Programmation mémoire distribuée

● Le succès de l'approche par passage de messages a contribué significativement au développement du parallélisme depuis ~15 ans

● L'intérêt pour le calcul parallèle s'est généralisé– Bassin d'utilisateurs plus vaste

– Chercheurs et industriels dans différents domaines, pas tous des spécialistes en info/parallélisme !

– Besoin d'environnements plus facile à utiliser

● Émergence SMP et procs multi-core

Page 51: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 51

Modèle à mémoire partagée

● Plusieurs procs s'exécutent en parallèle● Processus attribués à des processeurs distincs● Mémoire partagée (physiquement ou

virtuellement)● Communications

par lectures/écritures

dans la mémoire

partagée

Page 52: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 52

Modèle à mémoire partagée

● Particulièrement adapté aux architectures à mémoire partagée (de type SIMD et MIMD)– Multiprocesseurs

– Processeurs multi-core

● 2 principales représentations :– Threads

– Fork/Join

Page 53: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 53

Modèle de threads

● Programme : ensemble de processus légers (threads) qui coopèrent afin de réaliser un objectif commun

● Thread : entité logique, fonction, correspondant à une partie de programme– pouvant s’exécuter indépendamment des autres

parties– pouvant s’exécuter de façon concurrente– possédant des données locales et globales

Page 54: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 54

Modèle de threads

● Un programme écrit sous forme de threads peut être exécuté séquentiellement– Pseudo-parallélisme– Partage du temps CPU entre les threads durant

l’exécution– Changements de contexte (context switchs)

● Ce même programme peut aussi être exécuté de façon réellement parallèle– Répartition des threads sur les processeurs– Un ou plusieurs threads par processeur

Page 55: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 55

Modèle de threads

● Communication par les données globales stockées dans la mémoire qui est partagée

● Fonctionnalités pour– La gestion des threads (création, destruction, etc.)

– L’ordonnancement et l’état des threads (actif, exécutable, en exécution, en veille, etc.)

– La synchronisation (sémaphores, barrières, etc.)

Page 56: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 56

Modèle fork/join

● Thread maître– Exécution du code séquentiel– Débute et termine l’exécution– Fork : création de threads esclaves

● Threads esclaves– Exécutent la portion parallèle– Join : destruction des esclaves et retour

du contrôle au maître● Le nombre de threads peut varier

durant l’exécution

Thread maître

Fork

Join

Fork

Join

Page 57: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 57

Caractéristiques du modèle

● Facilité de programmation – Transparence– Ressemble beaucoup au modèle séquentiel

– Communications « indirectes » généralement plus faciles à gérer que le passage de messages

● La gestion des synchronisations doit se faire autrement que par des messages– Régions critiques

– Barrières

– Sémaphores

Page 58: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 58

Caractéristiques du modèle

● Problème de localité des données– Structurer le code pour tirer profit des caches

– Exemple : inversion ligne/colonne d’une matrice

● Efficacité non garantie– La transparence facilite la tâche du programmeur,

mais l’optimisation de la performance est plus difficile

– L’organisation matérielle de la mémoire peut avoir un impact important pour le même code sur 2 machines

Page 59: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 59

Développement d’applications basées sur le modèle à mémoire partagée

● Principaux modèles de programmation– Modèles de threads

Pthreads -> largement utilisé dans les bibliothèques des systèmes de type UNIX

Java Threads -> extension du langage Java qui encapsule une classe Thread

– Programmation à mémoire partagée structurée (Structured Shared-Memory Programming)

OpenMP

Page 60: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 60

Hello World ! En C/OpenMP

#include <stdio.h>#include <omp.h>

int main(int argc, char *argv[]) { int id;

omp_set_num_threads(atoi(argv[1])); #pragma omp parallel private (id) { id = omp_get_thread_num(); printf("Hello, world, du processus %d !\n", id); } return 0;}

Page 61: Info0604 Cours 1 Présentation du module Organisation ...pdelisle/fichiers/info... · gouvernements (défense), très coûteux ... – Comme les coeurs sont sur le même support,

Info0604 Cours 1 61

La semaine prochaine

pthreads