Ministère de l’enseignement supérieur
et de la recherche scientifique
****
Institut Supérieur de l’Informatique
Classe : Devoir Surveillé Durée :
2ing ISEOC Architecture Multiprocesseurs et algorithmes 1h30
Date : parallèles Documents et
Mars 2023 ***************** calculatrices non
Chargé(s) du cours : Mariem FEKI autorisés
Barème :
EX I (3) EX II (17)
Nom : .....................................................................................................................
Prénom : ......................................................................................................................
N° CIN :.......................................................................................................................
Exercice I (3 pnts)
Soit un client qui fait appel à vous pour réduire le temps d’exécution de son programme. En
effet, on suppose que le temps d’exécution de son code sur une architecture séquentielle
(SISD) est égal à 2,46s et que le client ne veut pas qu’il dépasse 1s. Des mesures ont montré
que 83% de son code est parallélisable.
1. Son objectif est-il réalisable ? justifier votre réponse
2. Parmi ces plateformes embarquées, que lui conseilleriez-vous ? justifier votre réponse
- une cible embarquée avec un processeur à 2 coeurs
- une cible embarquée avec un processeur à 4 coeurs
- une cible embarquée avec un processeur à 6 cœurs
- une cible embarquée avec un processeur à 8 cœurs
3. Donner un intervalle pour le temps d’exécution sur l’architecture choisie et ce, en se
basant sur les lois d’Amdahl et de Gustafson.
Exercice II
On se propose d’analyser des données provenant d’un pèse-personne. Ces données sont
enregistrées dans une matrice D à deux colonnes et à 100 000 lignes, chaque ligne représente
les données d’un individu. La première colonne représente la taille en cm de la personne et la
seconde colonne représente son poids en kg.
1/2
Le programme principal permet de :
- allouer dynamiquement de la mémoire pour la matrice à traiter (matrice D) et pour le tableau
obtenu après traitement (tableau IMC de 100 000 cases) ; ne pas oublier de libérer les espaces
réservés à la fin du programme pour une meilleure gestion de la mémoire ;
- remplir la première colonne de la matrice D (la taille) de valeurs aléatoires entières
comprises entre 150 et 200 et la seconde colonne (le poids) de valeurs aléatoires entières
comprises entre 40 et 160;
- déclarer et initialiser deux variables (Staille et Spoids) qui vont contenir la somme des
tailles (respectivement des poids) des différents individus ;
- déclarer deux variables (MoyTaille et MoyPoids) qui vont contenir la taille moyenne et le
poids moyen de la population analysée,
- déclarer et initialiser une variable NOb qui va contenir le nombre d’obèses détectés dans la
population analysée;
- déclarer une variable Pourcentage qui va contenir le pourcentage des obèses dans la
population analysée;
- fixer le nombre de threads sachant que notre unité de traitement est quadri-coeurs et
implémenter la région parallèle avec les directives de compliation OpenMP ;
- mesurer le temps d’execution du programme et l’afficher.
La région parallème permet de :
- paralléliser une boucle for qui permet de calculer la somme des tailles Staille et des poids
Spoids. Utiliser la clause reduction pour ce calcul.
- paralléliser une seconde boucle for qui permet de calculer les indices de masse corporelle
des différents individus (à sauvegarder dans le tableau IMC). L’IMC est égal au poids en
kg/taille² (en m). Si l’IMC d’un individu est strictement supérieur à 30 alors incrémenter le
nombre d’obèses. Pour ce calcul, utiliser une variable privée (NOb_local) et une section
critique. La section critique permet de protéger l’accès à la valeur NOb qui est une variable
partagée; Le temps passé en section critique doit être le plus court possible ;
- paralléliser le calcul des valeurs moyennes MoyTaille et MoyPoids et leur affichage avec le
calcul et l’affichage du Pourcentage des obèses.
Donner le programme C qui permet d’implémenter ce calcul en rajoutant les directives
openMP.
Bon Travail
2/2