SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Andreea Dicu Alexandra Musat Carmen Neghina
Psycho-economics
Psychology
Ateliers Pratiques
Programmation parallèle
Prof. Mohamed AKIL & Ramzi MAHMOUDI
AMINA Workshop 2010
Agenda
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 2
Introduction
Parallélisez – un vrai besoin
Parallélisez – une démarche organisée
Mise en pratique
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 3
Introduction
La première question à se poser, c'est savoir si la parallélisation de l'application
est nécessaire ?
Écrire un logiciel séquentiel est déjà du travail, souvent difficile :
la parallélisation le rendra encore plus dur.
Il y a eu beaucoup de progrès du matériel informatique (processeurs de 3.7 GHz
etc.)
Pourtant il existe toujours des applications scientifiques qui consomment "trop"
de ressources en temps : calculs (processeur) et cycles d’accès mémoire
Pour celles-ci, la seule solution, pour des raisons techniques ou économiques,
reste la ‘parallélisation’
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 4
Parallélisez – un vrai besoin
Multi-tâches :
Calcul distribué :
Performance de calcul:
Calcul parallèle est
Omniprésent
- Augmenter la performance lors de l’affectation de tâches distinctes pour
répondre à des événements non-déterministes
- Les applications interactives exigent de ‘faire beaucoup de choses en parallèle’
- Aujourd'hui, la plupart des processeurs offrent de l'exécution en parallèle (‘multi-core’)
- Le calcul est intrinsèquement distribués parce que l'information est distribuée
- Exemple : gestion d'une entreprise ou de banque à l'échelle internationale (word-wide company)
- Les questions : la communication entre les plates-formes, la portabilité et la sécurité.
- Toutes les techniques implémentées aujourd'hui dans nos machines de bureau ont été développés
dans les supercalculateurs de plusieurs depuis des années
- Les application de simulation sur des superordinateurs sont principalement numériques
- Les grands défis : la cosmologie, le repliement des protéines, l’imagerie médicale, la prédiction des
tremblements de terre, le climat ... mais aussi : la simulation des armes nucléaires
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 5
Parallélisez – une démarche organisée
Ecrire un algorithme parallèle
1
Injecter du parallélisme
2
Evaluer les performances
3
Optimiser
4
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 6
Ecrire un algorithme parallèle
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
L'algorithmique parallèle emprunte beaucoup à l'algorithmique classique dans sa problématique:
conception, analyse, étude de la complexité.
Les résultats sont quelquefois moins précis, car les problèmes sont plus récents, et aussi plus
difficiles.
Fondamentalement, il y a quand même une nouvelle dimension, un degré de liberté supplémentaire
avec l'exploitation simultanée de plusieurs ressources.
Algorithmes
- Produits 2 mat.
- Décomposition LU
Analyses
- complexité
- Scalabilité
les facteurs qui limitent l'efficacité
(déséquilibrage de charge, coût des communications, inactivité forcée due aux dépendances)
Mapper efficament (adapter – Adéquation Algorithme Architecture) l’algorithme sur l’architecture
un anneau
Une grille 2D
Un hypercube
Une grappe de processeurs
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 7
Ecrire un algorithme parallèle
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Une topologie simple ( anneau de processeurs ) permet de concevoir et d'écrire des algorithmes
parallèles, sans rien connaître aux architectures de machines.
( communications globales, produit matrice-vecteur …)
11
Les réseaux d'interconnexion, les mécanismes de routage : Prendre en considération les propriétés
topologiques du réseau ( cas de l'hypercube diffère des grilles toriques 2D de processeurs.)
22
Équilibrage de charge pour plate-forme hétérogène (ou homogène) . Autant l'équilibrage de charge 1D
reste facile, autant l'équilibrage de charge 2D s'avère complexe.
33
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 8
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Comprendre son application
Maitriser les concepts
de parallélisme
Choisir API
de threading
70% 20% 10%
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 9
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Avantages
a. Meilleures performances - Une façon simple de tirer profit du multi-core.
b. Meilleure utilisation des ressources - Réduit les temps d'attente, même sur des systèmes
multi processeurs.
c. Partage des données efficace - Il est plus facile de partager des données via l'accès direct à la
mémoire que recourir aux changes de messages
Risques
a. L'application est plus complexe
b. Le débogage est difficile (conflits d'accès aux données, verrouillages…)
Pourquoi des threads ?
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 10
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Les OS modernes chargent les programmes sous forme de process
(Gestion ressources / Exécution …)
Un process démarre depuis un point d'entrée sous forme d'un thread
Un thread peut créer par d'autres threads dans le contexte du même
process : (Chaque thread dispose de sa propre pile)
Tous les threads à l'intérieur d'un même process partagent les
segments de code et de données.
Segment code
Segment données
Process vs threads ?
Pile
thread
main()
Pile
thread
main()
Pile
thread
main()
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 11
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
• Simultanéité : deux threads ou plus sont actifs à un instant donné (peuvent tourner sur un monocore)
• Parallélisme : deux threads ou plus tournent à un instant donné (multicore obligatoire)
Simultanéité vs Parallélisme ?
T1
T2
T1
T2
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 12
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Threading pour des fonctionnalités
Attribuer les threads aux différentes fonctions de l'application
• Méthode la plus facile car les chevauchements sont peu probables
• Mais il pourrait y avoir des problèmes de séquencement
Exemple: construire une maison
Maçon, menuisier, couvreur, plombier,…
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 13
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Dans la vie quotidienne, de nombreux exemples :
a. Chaine de montage automobile : chaque ouvrier effectue une tâche qui lui est attribuée
b. Recherche de morceaux de Skylab : diviser la zone de recherches
c. Caisses de grandes surfaces : plusieurs caisses fonctionnent en parallèle
Threading pour les performances?
Améliorer les performances des calculs !!
Améliorer la flexibilité ou le flux !!
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 14
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Effectuer des tâches élémentaires le plus rapidement possible
Exemple : mise en place d'une table dans un restaurant
Un pour les assiettes
Un pour plier et poser les serviettes
Un pour les couverts
Un pour les verres
Flexibilité ?
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 15
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Terminer un maximum de tâches dans un même lapse de temps :
plusieurs solutions – il faut tester pour trouver la meilleure.
Exemple : mise en place des tables d'un banquet
Plusieurs serveurs, un par table
Serveurs spécialisés pour la vaisselle, les couverts, les verres, etc.
Volume ?
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 16
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
☻Bas niveau - WinThreads et Posix
☺Encapsulation – OpenMP et Thread Building Blocks
☻Cas special clustering - MPI (Message Passing Interface)
Les API de parallélisation
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 17
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
OpenMP – un choix judicieux
Mise en œuvre rapide –
Encapsulation de threading à base de pragmas de compilation en C++ et directives en Fortran
‘Désactivable’ –
Donc l'application peut tourner en mono-thread sans difficulté de mise en œuvre
Encapsule – la mécanique de bas niveau
Portable – C++ et Fortran ainsi que Windows, Linux et Mac
Gratuit
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 18
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Objectifs
1. Comprendre comment paralléliser une application avec des directives
OpenMP de base
2. Utiliser la synchronization OpenMP pour coordonner l'exécution des threads
et les accès à la mémoire
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 19
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
☺Directives de compilation pour la programmation multithread
☺Sa mise en œuvre est facile en Fortran et C/C++
☺Support des modèles de parallélisation de données
☺Parallélisation incrémentale
☺Regroupe le fonctionnement série et parallèle dans une seule source
Qu’est-ce qu’OpenMP ?
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 20
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
www.openmp.org
www.openmp.fr.nf
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 21
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Parallélisme par séparation-regroupement :
a. Le Thread maître engendre un jeu de threads selon les besoins
b. Le parallélisme est ajouté d'une façon incrémentale: le programme séquentiel se transforme
progressivement en programme parallèle
Modèle de programmation avec OpenMP?
Thread
maitre
Région parallèle
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 22
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
La plupart des commandes OpenMP se présente sous forme de directives ou pragmas. Pour C et C++, les
pragmas prennent la forme suivante :
#pragma omp directives [clause [clause]…]#pragma omp directives [clause [clause]…]
Syntaxe des pragma OpenMP
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 23
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
☺Une région parallèle est définie sur
plusieurs blocs de code structuré.
☺Les threads son créés ‘parallel’.
☺Les threads bloquent en fin de région.
☺Les données sont partagées par les
threads à moins que cela ne soit spécifié
autrement.
#pragma omp parallel
Thread
1
Thread
2
Thread
3
(C/C++)
#pragma omp parallel
{
Bloc à paralléliser
}
Région parallèles
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 24
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
☺Définir la variable d'environnement pour le nombre de threads
set OMP_NUM_THREADS = 2set OMP_NUM_THREADS = 2
☺Il n'y a pas de valeurs standard par défaut.
☺Sur beaucoup de systèmes : # de threads = # de processeurs
☺Les compilateurs Intel utilisent ceci par défaut
Combien de threads ?
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 25
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
#pragma omp parallel
#pragma omp for
i=1
i=2
i=3
i=4
i=1
i=2
i=3
i=4
i=9
i=10
i=11
i=12
i=9
i=10
i=11
i=12
i=5
i=6
i=7
i=8
i=5
i=6
i=7
i=8
Barrière implicite #pragma omp parallel
#pragma omp for
for(i = 1, i <= 12, i++)
c[i] = a[i] + b[i]
☺Partager les itérations de la boucle
entre les threads.
☺Doit se trouver dans la région parallèle
☺Doit précéder la boucle
☺Les threads se voient attribués un
ensemble indépendant d'itérations
☺Les threads doivent attendre la fin
du partage de travail
Partage des tâches
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 26
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
☺Ces deux segments de code sont équivalents
Combiner les pragmas
#pragma omp parallel
#pragma omp for
for(i = 1, i <= max, i++)
res[i] = huge();
#pragma omp parallel for
for(i = 1, i <= max, i++)
res[i] = huge();
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 27
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
OpenMP utilise un modèle de mémoire partagée
☺Avec un système à mémoire partagée, on a la possibilité
d'utiliser OpenMP comme moyen de parallélisation.
☺Un programme parallèle consiste alors en un groupe de fils
d'exécution (threads).
☺Ces fils d'exécution partageront le même espace d'adressage
dans la mémoire.
☺Les variables globales sont partagées par les threads
(C/C++: Variables globales, static)
Environnement de données
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 28
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Mais TOUT n'est pas partagé...
☺Les variables sur la pile dans des fonctions appelées dans des
régions parallèles sont PRIVATE
☺Les variables automatiques dans une phrase sont PRIVATE
☺Les indices de boucles sont PRIVATE mais il existe des
exceptions
☺C/C+: L'indice de la première boucle dans des boucles
imbriquées suite à une #pragma omp for est PRIVATE alors
que les indices des boucles imbriquées sont partagés.
Environnement de données
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 29
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Attributs de portée de données
Le statut par défaut peut être modifié avec :
☺Clause d'attributs de portée partagée par défaut
☺Définition des variables partagées
☺Définition des variables privées
Default (shared | none)Default (shared | none)
Shared (varname,…)Shared (varname,…)
Private (varname,…)Private (varname,…)
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 30
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
La clause private
Reproduit les variables pour chaque thread :
☺Les variables sont non-initialisées; les objets C++ sont construits par défaut
☺Toute valeur en dehors de la région parallèle est indéfinie.
void* work(float* c, int N)
{
float x y; int i;
#pragma omp parallel for private(x,y)
for(i=0; i<N; i++) {
x = a[i]; y = b[i];
c[i] = x + y;
}
}
ACCES INTERDIT AUX THREADS
NON AUTORISES
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 31
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
La clause shared
☺Définit explicitement les variables dont les données seront partagées par tous les threads.
☺En définissant une variable comme étant SHARED (partagée), vous garantissez que chaque
thread peut utiliser la variable, pas nécessairement en toute sécurité.
☺Les variables sont partagées par défaut.
void* work(float* c, int N) {
float x, y; int k = calculK(N);
#pragma omp parallel for private(x,y) shared(k)
for(int i=0; i<N; i++) {
x = a[i]; y = b[i];
c[i] = x + y + k;
}
}
C[] est partagé par défaut mais il y
a un risque de conflit
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 32
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Exemple : produit vectoriel
float point_produit (float* a, float* b, int N)
{
float sum = 0.0;
#pragma omp parallel for shared(sum)
for(int i=0; i<N; i++)
{ sum += a[i] * b[i] }
return sum
}
Qu’est ce qui
ne va pas ?
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 33
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Protéger les données partagées
float point_produit (float* a, float* b, int N)
{
float sum = 0.0;
#pragma omp parallel for shared(sum)
for(int i=0; i<N; i++)
{
#pragma omp critical
sum += a[i] * b[i];
}
return sum;
}
Il est impératif de
protéger l’accès aux
données partagées
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 34
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
☺Chaque thread attend son tour, un seul appel
consum() ce qui protége RES de conflits d'accès.
☺Le fait de nommer la zone critique RES_lock est
optionnel
La clause OpenMP Critical
float RES;
#pragma omp parallel
{ float B;
#pragma omp for
for(int i=0; i<niters; i++)
{
B = big_job(i);
#pragma omp critical (RES_lock)
consum (B, RES);
}
}
#pragma omp critical [(lock_name)]#pragma omp critical [(lock_name)] Définit une zone critique dans un bloc structuréDéfinit une zone critique dans un bloc structuré
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 35
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
☺Les variables dans “list” doivent être partagées dans la zone parallèle
☺A l'intérieur de zones parallèles ou de partage de travail :
░ Une copie privée de chaque variable dans la liste est crée et initialisée selon la nature de “op”
░ Ces copies sont mises à jour localement par le thread
░ En sortie de la zone concernée par la clause, les copies sont regroupées en une seule valeur
via "op" et combinées avec la variable partagée.
La clause OpenMP Reduction
reduction (op : list)reduction (op : list)
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 36
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
☺Un copie locale de somme pour chaque thread
☺Toutes les copies locales de somme son regroupées
puis stockées dans une variable “globale”
Exemple de Reduction
#pragma omp parallel for reduction(+:somme)
for(i=0; i<N; i++) {
somme += a[i] * b[i];
}
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 37
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
☺Des sections de code indépendantes peuvent s'exécuter en parallèle
Sections parallèles
#pragma omp parallel sections
{
#pragma omp section
phase1();
#pragma omp section
phase2();
#pragma omp section
phase3();
}
Série
Parallèle
Section1 Section2 Section3
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 38
Injecter du parallélisme
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Il reste beaucoup de chose à découvrir !
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 39
Applications
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 40
Evaluer les performances
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Outils d’évaluation des performances
☻Déterminer le temps nécessaire pour exécuter chaque partie (procédure,
fonction, bloc) du code
☻Déterminer les sections critiques du code (sections qui posent problème)
☻Pour analyser un code :
░ Rapport ou listing des compilateurs
░ Profiling (timers & profilers)
░ Hardware performance counters
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 41
Evaluer les performances
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Rapport et listing des compilateurs
☻ Les compilateurs peuvent générer éventuellement des rapports d'optimisation
et la liste des fichiers.
☻Utilisez le « Loader Map » pour déterminer les bibliothèques chargées
IA32/EM64T:
– <compiler> -opt-report {optimization, (Intel)}
– <compiler> -S {listing (Intel)}
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 42
Evaluer les performances
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Profiling : classification des analyses
Informations :
Trace file (raw)
Timeline ( état de thread / process,
communication, événement utilisateur
prédéfinit)
Outils :
Trace generateur
API instrumentation
Outils pour lire / interpréter les trace
files et visualiser
Informations :
Wall clock / CPU : temps passé en
chaque fonction.
HW counters : Caches misses, nombre
d’instructions FLOPS …
Outils :
Timers
Profilers
Profile visualiser
API to read/display HW counters info.
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 43
Evaluer les performances
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Timers
☻time :
$ gcc test.c -o testout
$ time ./testout
Le résultat de testout …..
real 0m0.122s
user 0m0.110s
sys 0m0.010s
Routine Type Résolution OS / compi.
times user/sys 1000 Linux/AIX
IRIX/UNICOS
getrusage wall/user/sys 1000 Linux/AIX/IRIX
gettimeofday wall clock 1 Linux/AIX
IRIX/UNICOS
rdtsc wall clock 0.1 Linux
read_real_time wall clock 0.001 AIX
system_clock wall clock (System) Fortran 90
Intrinsic
system_clock wall clock (System) MPI Library
(C &Fortran)
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 44
Evaluer les performances
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Profilers
$ gcc -pg test.c -o testout
$ ./testout
$ gprof ./testout | less
% cumulative self self total
time seconds seconds calls us/call us/call name
100.00 0.05 0.05 1 50000.00 50000.00
calcul
0.00 0.05 0.00 1 0.00 0.00 affiche
0.00 0.05 0.00 1 0.00 50000.00 main
Gprof
(+ Kprof)
Bprof Tprof … OUTILS DE BASE
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 45
Evaluer les performances
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
Profilers
Valgrind
(+Kcachegrind)
Intel Parallel
Studio
Vtune
Analyser
… OUTILS
AVANCES
Thread
profiler
tchecke
r
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 46
Optimiser
Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4
« L’optimisation prématurée est la source de tout les maux » Donald Knuth
Niveau algorithmique (diminuer l’ordre de complexité , structure de données adaptée…)
Niveau langage de développement (réorganisation du code, boucle, section critique, partage …)
Niveau assembleur (intégration instructions MMX, SSE4 …)
…
01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 47
Quelque chose
pour vous ouvrir
l’appétit …
Questions?
Idées?
Applaudissement?
Andreea Dicu Alexandra Musat Carmen Neghina
Psycho-economics
Psychology
Merci pour votre attention
Prof. Mohamed AKIL & Ramzi MAHMOUDI
AMINA Workshop 2010

Weitere ähnliche Inhalte

Andere mochten auch

Description personnelle (Vanessa)
Description personnelle (Vanessa)Description personnelle (Vanessa)
Description personnelle (Vanessa)olivier79
 
à la recherche du bleu Klein
à la recherche du bleu Kleinà la recherche du bleu Klein
à la recherche du bleu KleinSekko Cheng
 
MAESTRÍA EN TECNOLOGÍAS PARA LA GESTIÓN Y PRÁCTICA DOCENTE
MAESTRÍA  EN TECNOLOGÍAS PARA LA GESTIÓN Y PRÁCTICA DOCENTEMAESTRÍA  EN TECNOLOGÍAS PARA LA GESTIÓN Y PRÁCTICA DOCENTE
MAESTRÍA EN TECNOLOGÍAS PARA LA GESTIÓN Y PRÁCTICA DOCENTETelmo Viteri
 
Freddy acevedo hardware
Freddy acevedo hardwareFreddy acevedo hardware
Freddy acevedo hardwarefreddy acevedo
 
Tec Bretagne Hypermobilité Et Nomadisme - Explications
Tec Bretagne   Hypermobilité Et Nomadisme - ExplicationsTec Bretagne   Hypermobilité Et Nomadisme - Explications
Tec Bretagne Hypermobilité Et Nomadisme - ExplicationsOlivier Girault
 
La vie des jeunes
La vie des jeunesLa vie des jeunes
La vie des jeunesiesboliches
 
Aupaysdescingl S
Aupaysdescingl SAupaysdescingl S
Aupaysdescingl Sluna131
 
Diccionario Ilustrado Presentacion[1]
Diccionario Ilustrado Presentacion[1]Diccionario Ilustrado Presentacion[1]
Diccionario Ilustrado Presentacion[1]Esc N 6 DE 19
 
Para Las Damas
Para Las DamasPara Las Damas
Para Las Damaskikesa
 
Consumidor 2.0. ¿Dónde está la realidad de los mercados virtuales?
Consumidor 2.0. ¿Dónde está la realidad de los mercados virtuales?Consumidor 2.0. ¿Dónde está la realidad de los mercados virtuales?
Consumidor 2.0. ¿Dónde está la realidad de los mercados virtuales?Miguel Guinalíu
 
Javi 1ºBTI
Javi 1ºBTIJavi 1ºBTI
Javi 1ºBTIjavi
 
Bonitas Flores Bonita Musica
Bonitas Flores Bonita MusicaBonitas Flores Bonita Musica
Bonitas Flores Bonita Musicaebebiyen
 

Andere mochten auch (20)

Modelo Digital del Proceso Pedagógico
Modelo Digital del Proceso PedagógicoModelo Digital del Proceso Pedagógico
Modelo Digital del Proceso Pedagógico
 
Description personnelle (Vanessa)
Description personnelle (Vanessa)Description personnelle (Vanessa)
Description personnelle (Vanessa)
 
Sec.Did.4
Sec.Did.4Sec.Did.4
Sec.Did.4
 
à la recherche du bleu Klein
à la recherche du bleu Kleinà la recherche du bleu Klein
à la recherche du bleu Klein
 
MAESTRÍA EN TECNOLOGÍAS PARA LA GESTIÓN Y PRÁCTICA DOCENTE
MAESTRÍA  EN TECNOLOGÍAS PARA LA GESTIÓN Y PRÁCTICA DOCENTEMAESTRÍA  EN TECNOLOGÍAS PARA LA GESTIÓN Y PRÁCTICA DOCENTE
MAESTRÍA EN TECNOLOGÍAS PARA LA GESTIÓN Y PRÁCTICA DOCENTE
 
Freddy acevedo hardware
Freddy acevedo hardwareFreddy acevedo hardware
Freddy acevedo hardware
 
Groucho
GrouchoGroucho
Groucho
 
La imagen en los medios
La imagen en los mediosLa imagen en los medios
La imagen en los medios
 
Innovacion Profesional en Tiempos de Internet
Innovacion Profesional en Tiempos de InternetInnovacion Profesional en Tiempos de Internet
Innovacion Profesional en Tiempos de Internet
 
Porteño agualada
Porteño agualadaPorteño agualada
Porteño agualada
 
Medios Audiovisuales
Medios AudiovisualesMedios Audiovisuales
Medios Audiovisuales
 
Tec Bretagne Hypermobilité Et Nomadisme - Explications
Tec Bretagne   Hypermobilité Et Nomadisme - ExplicationsTec Bretagne   Hypermobilité Et Nomadisme - Explications
Tec Bretagne Hypermobilité Et Nomadisme - Explications
 
Curso Regional Zona Biii
Curso Regional Zona BiiiCurso Regional Zona Biii
Curso Regional Zona Biii
 
La vie des jeunes
La vie des jeunesLa vie des jeunes
La vie des jeunes
 
Aupaysdescingl S
Aupaysdescingl SAupaysdescingl S
Aupaysdescingl S
 
Diccionario Ilustrado Presentacion[1]
Diccionario Ilustrado Presentacion[1]Diccionario Ilustrado Presentacion[1]
Diccionario Ilustrado Presentacion[1]
 
Para Las Damas
Para Las DamasPara Las Damas
Para Las Damas
 
Consumidor 2.0. ¿Dónde está la realidad de los mercados virtuales?
Consumidor 2.0. ¿Dónde está la realidad de los mercados virtuales?Consumidor 2.0. ¿Dónde está la realidad de los mercados virtuales?
Consumidor 2.0. ¿Dónde está la realidad de los mercados virtuales?
 
Javi 1ºBTI
Javi 1ºBTIJavi 1ºBTI
Javi 1ºBTI
 
Bonitas Flores Bonita Musica
Bonitas Flores Bonita MusicaBonitas Flores Bonita Musica
Bonitas Flores Bonita Musica
 

Ähnlich wie Amina 2010 workshop slides final version

Mécanisme de planification de tâches
Mécanisme de planification de tâchesMécanisme de planification de tâches
Mécanisme de planification de tâchesNovencia Groupe
 
L' Open data vu du Cloud computing
L' Open data vu du Cloud computing L' Open data vu du Cloud computing
L' Open data vu du Cloud computing Jonathan Le Lous
 
Chap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueChap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueMohamed Lahby
 
Telnet stage pfe book_2017-2018
Telnet stage pfe book_2017-2018Telnet stage pfe book_2017-2018
Telnet stage pfe book_2017-2018. WATCOM
 
Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur Mohamed Lahby
 
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdfChapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdfSoumayaMabrouk2
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienRachid Zarouali
 
Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !EmileChomton1
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1Marc Bojoly
 
Eco Conception logicielle : Comment réduire par deux la consommation d&rsquo;...
Eco Conception logicielle : Comment réduire par deux la consommation d&rsquo;...Eco Conception logicielle : Comment réduire par deux la consommation d&rsquo;...
Eco Conception logicielle : Comment réduire par deux la consommation d&rsquo;...Microsoft
 
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...Guillaume Chevalier
 
Big Data Developers in Paris presentation : Social Data
Big Data Developers in Paris presentation : Social DataBig Data Developers in Paris presentation : Social Data
Big Data Developers in Paris presentation : Social DataAbdellah Lamrani Alaoui
 
Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008MRamo2s
 
Présentation NUVEA #FEnS2015
Présentation NUVEA  #FEnS2015Présentation NUVEA  #FEnS2015
Présentation NUVEA #FEnS2015ctanniou
 

Ähnlich wie Amina 2010 workshop slides final version (20)

ex6_solution.pdf
ex6_solution.pdfex6_solution.pdf
ex6_solution.pdf
 
Mécanisme de planification de tâches
Mécanisme de planification de tâchesMécanisme de planification de tâches
Mécanisme de planification de tâches
 
Tp1 6-141218060317-conversion-gate02
Tp1 6-141218060317-conversion-gate02Tp1 6-141218060317-conversion-gate02
Tp1 6-141218060317-conversion-gate02
 
L' Open data vu du Cloud computing
L' Open data vu du Cloud computing L' Open data vu du Cloud computing
L' Open data vu du Cloud computing
 
Chap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueChap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmique
 
Telnet stage pfe book_2017-2018
Telnet stage pfe book_2017-2018Telnet stage pfe book_2017-2018
Telnet stage pfe book_2017-2018
 
Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur
 
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdfChapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdf
 
Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicien
 
Smb20 sur 20
Smb20 sur 20Smb20 sur 20
Smb20 sur 20
 
Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !Développeur ta prod tu respecteras !
Développeur ta prod tu respecteras !
 
Rapport_PRES__Copy_
Rapport_PRES__Copy_Rapport_PRES__Copy_
Rapport_PRES__Copy_
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
 
Eco Conception logicielle : Comment réduire par deux la consommation d&rsquo;...
Eco Conception logicielle : Comment réduire par deux la consommation d&rsquo;...Eco Conception logicielle : Comment réduire par deux la consommation d&rsquo;...
Eco Conception logicielle : Comment réduire par deux la consommation d&rsquo;...
 
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
Python appliqué en apprentissage automatique (Applied Python in Machine Learn...
 
Big Data Developers in Paris presentation : Social Data
Big Data Developers in Paris presentation : Social DataBig Data Developers in Paris presentation : Social Data
Big Data Developers in Paris presentation : Social Data
 
Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008
 
Présentation NUVEA #FEnS2015
Présentation NUVEA  #FEnS2015Présentation NUVEA  #FEnS2015
Présentation NUVEA #FEnS2015
 
vanderpypendaniel_msc
vanderpypendaniel_mscvanderpypendaniel_msc
vanderpypendaniel_msc
 

Mehr von RMwebsite

Carte Graphique Gtx1080ti
Carte Graphique Gtx1080tiCarte Graphique Gtx1080ti
Carte Graphique Gtx1080tiRMwebsite
 
Projet personnel P2 2009 2010 vf
Projet personnel P2 2009 2010 vfProjet personnel P2 2009 2010 vf
Projet personnel P2 2009 2010 vfRMwebsite
 
Isbs slides 2010
Isbs slides 2010Isbs slides 2010
Isbs slides 2010RMwebsite
 
Projet personnel P1 2009 2010 vf
Projet personnel P1 2009 2010 vfProjet personnel P1 2009 2010 vf
Projet personnel P1 2009 2010 vfRMwebsite
 
Architecture des ordinateurs
Architecture des ordinateursArchitecture des ordinateurs
Architecture des ordinateursRMwebsite
 
Le bios Slides
Le bios SlidesLe bios Slides
Le bios SlidesRMwebsite
 
Study on Thinning
Study on Thinning Study on Thinning
Study on Thinning RMwebsite
 
3D skeltonization
3D skeltonization3D skeltonization
3D skeltonizationRMwebsite
 
FANTASY ART 1
FANTASY ART 1FANTASY ART 1
FANTASY ART 1RMwebsite
 
DIGITAL ART DESIGN
DIGITAL ART DESIGN DIGITAL ART DESIGN
DIGITAL ART DESIGN RMwebsite
 
Sujet 6 - Carte Son
Sujet 6 - Carte SonSujet 6 - Carte Son
Sujet 6 - Carte SonRMwebsite
 
Sujet 4 - CARTE GRAPHIQUE
Sujet 4 - CARTE GRAPHIQUESujet 4 - CARTE GRAPHIQUE
Sujet 4 - CARTE GRAPHIQUERMwebsite
 
Sujet 3 - LE DISQUE DUR
Sujet 3 - LE DISQUE DURSujet 3 - LE DISQUE DUR
Sujet 3 - LE DISQUE DURRMwebsite
 
Sujet 2 - LES BUS
Sujet 2 - LES BUSSujet 2 - LES BUS
Sujet 2 - LES BUSRMwebsite
 

Mehr von RMwebsite (20)

Carte Graphique Gtx1080ti
Carte Graphique Gtx1080tiCarte Graphique Gtx1080ti
Carte Graphique Gtx1080ti
 
Projet personnel P2 2009 2010 vf
Projet personnel P2 2009 2010 vfProjet personnel P2 2009 2010 vf
Projet personnel P2 2009 2010 vf
 
Isbs slides 2010
Isbs slides 2010Isbs slides 2010
Isbs slides 2010
 
Projet personnel P1 2009 2010 vf
Projet personnel P1 2009 2010 vfProjet personnel P1 2009 2010 vf
Projet personnel P1 2009 2010 vf
 
Architecture des ordinateurs
Architecture des ordinateursArchitecture des ordinateurs
Architecture des ordinateurs
 
Le bios Slides
Le bios SlidesLe bios Slides
Le bios Slides
 
Smoothing2
Smoothing2Smoothing2
Smoothing2
 
Lissage
LissageLissage
Lissage
 
Smoothing1
Smoothing1Smoothing1
Smoothing1
 
Study on Thinning
Study on Thinning Study on Thinning
Study on Thinning
 
3D skeltonization
3D skeltonization3D skeltonization
3D skeltonization
 
Watershed
WatershedWatershed
Watershed
 
FRACTAL ART
FRACTAL ARTFRACTAL ART
FRACTAL ART
 
FANTASY ART 1
FANTASY ART 1FANTASY ART 1
FANTASY ART 1
 
DIGITAL ART DESIGN
DIGITAL ART DESIGN DIGITAL ART DESIGN
DIGITAL ART DESIGN
 
Sujet 6 - Carte Son
Sujet 6 - Carte SonSujet 6 - Carte Son
Sujet 6 - Carte Son
 
Sujet 6
Sujet 6Sujet 6
Sujet 6
 
Sujet 4 - CARTE GRAPHIQUE
Sujet 4 - CARTE GRAPHIQUESujet 4 - CARTE GRAPHIQUE
Sujet 4 - CARTE GRAPHIQUE
 
Sujet 3 - LE DISQUE DUR
Sujet 3 - LE DISQUE DURSujet 3 - LE DISQUE DUR
Sujet 3 - LE DISQUE DUR
 
Sujet 2 - LES BUS
Sujet 2 - LES BUSSujet 2 - LES BUS
Sujet 2 - LES BUS
 

Kürzlich hochgeladen

SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 

Kürzlich hochgeladen (10)

SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 

Amina 2010 workshop slides final version

  • 1. Andreea Dicu Alexandra Musat Carmen Neghina Psycho-economics Psychology Ateliers Pratiques Programmation parallèle Prof. Mohamed AKIL & Ramzi MAHMOUDI AMINA Workshop 2010
  • 2. Agenda 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 2 Introduction Parallélisez – un vrai besoin Parallélisez – une démarche organisée Mise en pratique
  • 3. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 3 Introduction La première question à se poser, c'est savoir si la parallélisation de l'application est nécessaire ? Écrire un logiciel séquentiel est déjà du travail, souvent difficile : la parallélisation le rendra encore plus dur. Il y a eu beaucoup de progrès du matériel informatique (processeurs de 3.7 GHz etc.) Pourtant il existe toujours des applications scientifiques qui consomment "trop" de ressources en temps : calculs (processeur) et cycles d’accès mémoire Pour celles-ci, la seule solution, pour des raisons techniques ou économiques, reste la ‘parallélisation’
  • 4. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 4 Parallélisez – un vrai besoin Multi-tâches : Calcul distribué : Performance de calcul: Calcul parallèle est Omniprésent - Augmenter la performance lors de l’affectation de tâches distinctes pour répondre à des événements non-déterministes - Les applications interactives exigent de ‘faire beaucoup de choses en parallèle’ - Aujourd'hui, la plupart des processeurs offrent de l'exécution en parallèle (‘multi-core’) - Le calcul est intrinsèquement distribués parce que l'information est distribuée - Exemple : gestion d'une entreprise ou de banque à l'échelle internationale (word-wide company) - Les questions : la communication entre les plates-formes, la portabilité et la sécurité. - Toutes les techniques implémentées aujourd'hui dans nos machines de bureau ont été développés dans les supercalculateurs de plusieurs depuis des années - Les application de simulation sur des superordinateurs sont principalement numériques - Les grands défis : la cosmologie, le repliement des protéines, l’imagerie médicale, la prédiction des tremblements de terre, le climat ... mais aussi : la simulation des armes nucléaires
  • 5. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 5 Parallélisez – une démarche organisée Ecrire un algorithme parallèle 1 Injecter du parallélisme 2 Evaluer les performances 3 Optimiser 4
  • 6. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 6 Ecrire un algorithme parallèle Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 L'algorithmique parallèle emprunte beaucoup à l'algorithmique classique dans sa problématique: conception, analyse, étude de la complexité. Les résultats sont quelquefois moins précis, car les problèmes sont plus récents, et aussi plus difficiles. Fondamentalement, il y a quand même une nouvelle dimension, un degré de liberté supplémentaire avec l'exploitation simultanée de plusieurs ressources. Algorithmes - Produits 2 mat. - Décomposition LU Analyses - complexité - Scalabilité les facteurs qui limitent l'efficacité (déséquilibrage de charge, coût des communications, inactivité forcée due aux dépendances) Mapper efficament (adapter – Adéquation Algorithme Architecture) l’algorithme sur l’architecture un anneau Une grille 2D Un hypercube Une grappe de processeurs
  • 7. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 7 Ecrire un algorithme parallèle Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Une topologie simple ( anneau de processeurs ) permet de concevoir et d'écrire des algorithmes parallèles, sans rien connaître aux architectures de machines. ( communications globales, produit matrice-vecteur …) 11 Les réseaux d'interconnexion, les mécanismes de routage : Prendre en considération les propriétés topologiques du réseau ( cas de l'hypercube diffère des grilles toriques 2D de processeurs.) 22 Équilibrage de charge pour plate-forme hétérogène (ou homogène) . Autant l'équilibrage de charge 1D reste facile, autant l'équilibrage de charge 2D s'avère complexe. 33
  • 8. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 8 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Comprendre son application Maitriser les concepts de parallélisme Choisir API de threading 70% 20% 10%
  • 9. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 9 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Avantages a. Meilleures performances - Une façon simple de tirer profit du multi-core. b. Meilleure utilisation des ressources - Réduit les temps d'attente, même sur des systèmes multi processeurs. c. Partage des données efficace - Il est plus facile de partager des données via l'accès direct à la mémoire que recourir aux changes de messages Risques a. L'application est plus complexe b. Le débogage est difficile (conflits d'accès aux données, verrouillages…) Pourquoi des threads ?
  • 10. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 10 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Les OS modernes chargent les programmes sous forme de process (Gestion ressources / Exécution …) Un process démarre depuis un point d'entrée sous forme d'un thread Un thread peut créer par d'autres threads dans le contexte du même process : (Chaque thread dispose de sa propre pile) Tous les threads à l'intérieur d'un même process partagent les segments de code et de données. Segment code Segment données Process vs threads ? Pile thread main() Pile thread main() Pile thread main()
  • 11. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 11 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 • Simultanéité : deux threads ou plus sont actifs à un instant donné (peuvent tourner sur un monocore) • Parallélisme : deux threads ou plus tournent à un instant donné (multicore obligatoire) Simultanéité vs Parallélisme ? T1 T2 T1 T2
  • 12. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 12 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Threading pour des fonctionnalités Attribuer les threads aux différentes fonctions de l'application • Méthode la plus facile car les chevauchements sont peu probables • Mais il pourrait y avoir des problèmes de séquencement Exemple: construire une maison Maçon, menuisier, couvreur, plombier,…
  • 13. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 13 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Dans la vie quotidienne, de nombreux exemples : a. Chaine de montage automobile : chaque ouvrier effectue une tâche qui lui est attribuée b. Recherche de morceaux de Skylab : diviser la zone de recherches c. Caisses de grandes surfaces : plusieurs caisses fonctionnent en parallèle Threading pour les performances? Améliorer les performances des calculs !! Améliorer la flexibilité ou le flux !!
  • 14. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 14 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Effectuer des tâches élémentaires le plus rapidement possible Exemple : mise en place d'une table dans un restaurant Un pour les assiettes Un pour plier et poser les serviettes Un pour les couverts Un pour les verres Flexibilité ?
  • 15. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 15 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Terminer un maximum de tâches dans un même lapse de temps : plusieurs solutions – il faut tester pour trouver la meilleure. Exemple : mise en place des tables d'un banquet Plusieurs serveurs, un par table Serveurs spécialisés pour la vaisselle, les couverts, les verres, etc. Volume ?
  • 16. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 16 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 ☻Bas niveau - WinThreads et Posix ☺Encapsulation – OpenMP et Thread Building Blocks ☻Cas special clustering - MPI (Message Passing Interface) Les API de parallélisation
  • 17. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 17 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 OpenMP – un choix judicieux Mise en œuvre rapide – Encapsulation de threading à base de pragmas de compilation en C++ et directives en Fortran ‘Désactivable’ – Donc l'application peut tourner en mono-thread sans difficulté de mise en œuvre Encapsule – la mécanique de bas niveau Portable – C++ et Fortran ainsi que Windows, Linux et Mac Gratuit
  • 18. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 18 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Objectifs 1. Comprendre comment paralléliser une application avec des directives OpenMP de base 2. Utiliser la synchronization OpenMP pour coordonner l'exécution des threads et les accès à la mémoire
  • 19. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 19 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 ☺Directives de compilation pour la programmation multithread ☺Sa mise en œuvre est facile en Fortran et C/C++ ☺Support des modèles de parallélisation de données ☺Parallélisation incrémentale ☺Regroupe le fonctionnement série et parallèle dans une seule source Qu’est-ce qu’OpenMP ?
  • 20. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 20 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 www.openmp.org www.openmp.fr.nf
  • 21. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 21 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Parallélisme par séparation-regroupement : a. Le Thread maître engendre un jeu de threads selon les besoins b. Le parallélisme est ajouté d'une façon incrémentale: le programme séquentiel se transforme progressivement en programme parallèle Modèle de programmation avec OpenMP? Thread maitre Région parallèle
  • 22. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 22 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 La plupart des commandes OpenMP se présente sous forme de directives ou pragmas. Pour C et C++, les pragmas prennent la forme suivante : #pragma omp directives [clause [clause]…]#pragma omp directives [clause [clause]…] Syntaxe des pragma OpenMP
  • 23. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 23 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 ☺Une région parallèle est définie sur plusieurs blocs de code structuré. ☺Les threads son créés ‘parallel’. ☺Les threads bloquent en fin de région. ☺Les données sont partagées par les threads à moins que cela ne soit spécifié autrement. #pragma omp parallel Thread 1 Thread 2 Thread 3 (C/C++) #pragma omp parallel { Bloc à paralléliser } Région parallèles
  • 24. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 24 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 ☺Définir la variable d'environnement pour le nombre de threads set OMP_NUM_THREADS = 2set OMP_NUM_THREADS = 2 ☺Il n'y a pas de valeurs standard par défaut. ☺Sur beaucoup de systèmes : # de threads = # de processeurs ☺Les compilateurs Intel utilisent ceci par défaut Combien de threads ?
  • 25. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 25 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 #pragma omp parallel #pragma omp for i=1 i=2 i=3 i=4 i=1 i=2 i=3 i=4 i=9 i=10 i=11 i=12 i=9 i=10 i=11 i=12 i=5 i=6 i=7 i=8 i=5 i=6 i=7 i=8 Barrière implicite #pragma omp parallel #pragma omp for for(i = 1, i <= 12, i++) c[i] = a[i] + b[i] ☺Partager les itérations de la boucle entre les threads. ☺Doit se trouver dans la région parallèle ☺Doit précéder la boucle ☺Les threads se voient attribués un ensemble indépendant d'itérations ☺Les threads doivent attendre la fin du partage de travail Partage des tâches
  • 26. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 26 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 ☺Ces deux segments de code sont équivalents Combiner les pragmas #pragma omp parallel #pragma omp for for(i = 1, i <= max, i++) res[i] = huge(); #pragma omp parallel for for(i = 1, i <= max, i++) res[i] = huge();
  • 27. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 27 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 OpenMP utilise un modèle de mémoire partagée ☺Avec un système à mémoire partagée, on a la possibilité d'utiliser OpenMP comme moyen de parallélisation. ☺Un programme parallèle consiste alors en un groupe de fils d'exécution (threads). ☺Ces fils d'exécution partageront le même espace d'adressage dans la mémoire. ☺Les variables globales sont partagées par les threads (C/C++: Variables globales, static) Environnement de données
  • 28. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 28 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Mais TOUT n'est pas partagé... ☺Les variables sur la pile dans des fonctions appelées dans des régions parallèles sont PRIVATE ☺Les variables automatiques dans une phrase sont PRIVATE ☺Les indices de boucles sont PRIVATE mais il existe des exceptions ☺C/C+: L'indice de la première boucle dans des boucles imbriquées suite à une #pragma omp for est PRIVATE alors que les indices des boucles imbriquées sont partagés. Environnement de données
  • 29. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 29 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Attributs de portée de données Le statut par défaut peut être modifié avec : ☺Clause d'attributs de portée partagée par défaut ☺Définition des variables partagées ☺Définition des variables privées Default (shared | none)Default (shared | none) Shared (varname,…)Shared (varname,…) Private (varname,…)Private (varname,…)
  • 30. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 30 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 La clause private Reproduit les variables pour chaque thread : ☺Les variables sont non-initialisées; les objets C++ sont construits par défaut ☺Toute valeur en dehors de la région parallèle est indéfinie. void* work(float* c, int N) { float x y; int i; #pragma omp parallel for private(x,y) for(i=0; i<N; i++) { x = a[i]; y = b[i]; c[i] = x + y; } } ACCES INTERDIT AUX THREADS NON AUTORISES
  • 31. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 31 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 La clause shared ☺Définit explicitement les variables dont les données seront partagées par tous les threads. ☺En définissant une variable comme étant SHARED (partagée), vous garantissez que chaque thread peut utiliser la variable, pas nécessairement en toute sécurité. ☺Les variables sont partagées par défaut. void* work(float* c, int N) { float x, y; int k = calculK(N); #pragma omp parallel for private(x,y) shared(k) for(int i=0; i<N; i++) { x = a[i]; y = b[i]; c[i] = x + y + k; } } C[] est partagé par défaut mais il y a un risque de conflit
  • 32. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 32 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Exemple : produit vectoriel float point_produit (float* a, float* b, int N) { float sum = 0.0; #pragma omp parallel for shared(sum) for(int i=0; i<N; i++) { sum += a[i] * b[i] } return sum } Qu’est ce qui ne va pas ?
  • 33. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 33 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Protéger les données partagées float point_produit (float* a, float* b, int N) { float sum = 0.0; #pragma omp parallel for shared(sum) for(int i=0; i<N; i++) { #pragma omp critical sum += a[i] * b[i]; } return sum; } Il est impératif de protéger l’accès aux données partagées
  • 34. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 34 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 ☺Chaque thread attend son tour, un seul appel consum() ce qui protége RES de conflits d'accès. ☺Le fait de nommer la zone critique RES_lock est optionnel La clause OpenMP Critical float RES; #pragma omp parallel { float B; #pragma omp for for(int i=0; i<niters; i++) { B = big_job(i); #pragma omp critical (RES_lock) consum (B, RES); } } #pragma omp critical [(lock_name)]#pragma omp critical [(lock_name)] Définit une zone critique dans un bloc structuréDéfinit une zone critique dans un bloc structuré
  • 35. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 35 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 ☺Les variables dans “list” doivent être partagées dans la zone parallèle ☺A l'intérieur de zones parallèles ou de partage de travail : ░ Une copie privée de chaque variable dans la liste est crée et initialisée selon la nature de “op” ░ Ces copies sont mises à jour localement par le thread ░ En sortie de la zone concernée par la clause, les copies sont regroupées en une seule valeur via "op" et combinées avec la variable partagée. La clause OpenMP Reduction reduction (op : list)reduction (op : list)
  • 36. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 36 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 ☺Un copie locale de somme pour chaque thread ☺Toutes les copies locales de somme son regroupées puis stockées dans une variable “globale” Exemple de Reduction #pragma omp parallel for reduction(+:somme) for(i=0; i<N; i++) { somme += a[i] * b[i]; }
  • 37. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 37 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 ☺Des sections de code indépendantes peuvent s'exécuter en parallèle Sections parallèles #pragma omp parallel sections { #pragma omp section phase1(); #pragma omp section phase2(); #pragma omp section phase3(); } Série Parallèle Section1 Section2 Section3
  • 38. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 38 Injecter du parallélisme Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Il reste beaucoup de chose à découvrir !
  • 39. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 39 Applications
  • 40. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 40 Evaluer les performances Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Outils d’évaluation des performances ☻Déterminer le temps nécessaire pour exécuter chaque partie (procédure, fonction, bloc) du code ☻Déterminer les sections critiques du code (sections qui posent problème) ☻Pour analyser un code : ░ Rapport ou listing des compilateurs ░ Profiling (timers & profilers) ░ Hardware performance counters
  • 41. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 41 Evaluer les performances Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Rapport et listing des compilateurs ☻ Les compilateurs peuvent générer éventuellement des rapports d'optimisation et la liste des fichiers. ☻Utilisez le « Loader Map » pour déterminer les bibliothèques chargées IA32/EM64T: – <compiler> -opt-report {optimization, (Intel)} – <compiler> -S {listing (Intel)}
  • 42. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 42 Evaluer les performances Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Profiling : classification des analyses Informations : Trace file (raw) Timeline ( état de thread / process, communication, événement utilisateur prédéfinit) Outils : Trace generateur API instrumentation Outils pour lire / interpréter les trace files et visualiser Informations : Wall clock / CPU : temps passé en chaque fonction. HW counters : Caches misses, nombre d’instructions FLOPS … Outils : Timers Profilers Profile visualiser API to read/display HW counters info.
  • 43. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 43 Evaluer les performances Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Timers ☻time : $ gcc test.c -o testout $ time ./testout Le résultat de testout ….. real 0m0.122s user 0m0.110s sys 0m0.010s Routine Type Résolution OS / compi. times user/sys 1000 Linux/AIX IRIX/UNICOS getrusage wall/user/sys 1000 Linux/AIX/IRIX gettimeofday wall clock 1 Linux/AIX IRIX/UNICOS rdtsc wall clock 0.1 Linux read_real_time wall clock 0.001 AIX system_clock wall clock (System) Fortran 90 Intrinsic system_clock wall clock (System) MPI Library (C &Fortran)
  • 44. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 44 Evaluer les performances Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Profilers $ gcc -pg test.c -o testout $ ./testout $ gprof ./testout | less % cumulative self self total time seconds seconds calls us/call us/call name 100.00 0.05 0.05 1 50000.00 50000.00 calcul 0.00 0.05 0.00 1 0.00 0.00 affiche 0.00 0.05 0.00 1 0.00 50000.00 main Gprof (+ Kprof) Bprof Tprof … OUTILS DE BASE
  • 45. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 45 Evaluer les performances Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 Profilers Valgrind (+Kcachegrind) Intel Parallel Studio Vtune Analyser … OUTILS AVANCES Thread profiler tchecke r
  • 46. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 46 Optimiser Step 1Step 1 Step 2Step 2 Step 3Step 3 Step 4Step 4 « L’optimisation prématurée est la source de tout les maux » Donald Knuth Niveau algorithmique (diminuer l’ordre de complexité , structure de données adaptée…) Niveau langage de développement (réorganisation du code, boucle, section critique, partage …) Niveau assembleur (intégration instructions MMX, SSE4 …) …
  • 47. 01/30/15 M. AKIL & R. MAHMOUDI - AMINA Workshop 47 Quelque chose pour vous ouvrir l’appétit … Questions? Idées? Applaudissement?
  • 48. Andreea Dicu Alexandra Musat Carmen Neghina Psycho-economics Psychology Merci pour votre attention Prof. Mohamed AKIL & Ramzi MAHMOUDI AMINA Workshop 2010