SlideShare a Scribd company logo
1 of 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

More Related Content

Viewers also liked

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
 

Viewers also liked (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
 

Similar to 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
 

Similar to 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
 

More from 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
 

More from 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
 

Recently uploaded

Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
presentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptxpresentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptxNYTombaye
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 

Recently uploaded (20)

DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptx
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
presentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptxpresentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptx
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.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