Changes between Version 9 and Version 10 of MjpegCourse/Multipro


Ignore:
Timestamp:
Dec 3, 2010, 3:35:26 PM (13 years ago)
Author:
joel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MjpegCourse/Multipro

    v9 v10  
    11{{{
    22#!html
    3 <h1>TP3: Déploiement de l'application MJPEG sur architecture multiprocesseur</h1>
     3<h1>TP3 : Déploiement de l'application MJPEG sur une architecture multiprocesseur</h1>
    44}}}
    55[[PageOutline]]
    66
    7 TP Précédent: MjpegCourse/Monopro
     7TP Précédent : MjpegCourse/Monopro
    88
    99= 0. Objectif =
    1010
    11 Comme pour les précédents TP, vous aurez à fournir un certain nombre de sources et un rapport.
    12 Il vous est conseillé de parcourir la documentation dans le trac, en partant de WikiStart.
     11Comme pour les précédents TP, vous aurez à fournir un certain nombre de sources
     12et un rapport.  Il vous est conseillé de parcourir la documentation dans le
     13trac, en partant de WikiStart.
    1314
    1415
    15 La première partie de ce TP vise la description d'une architecture matérielle multiprocesseurs générique,
    16 appelée !VgmnNoirqMulti. Cette architecture est générique dans le sens où on peut faire varier par un simple
    17 paramètre le nombre de processeurs et le nombre de bancs mémoire, ainsi que les caractéristiques des caches
    18 rattachés aux processeurs.
     16La première partie de ce TP vise la description d'une architecture matérielle
     17multiprocesseurs générique, appelée !VgmnNoirqMulti. Cette architecture est
     18générique dans le sens où on peut faire varier par un simple paramètre le
     19nombre de processeurs et le nombre de bancs mémoire, ainsi que les
     20caractéristiques des caches rattachés aux processeurs.
    1921
    20 La seconde partie de ce TP vise à déployer l'application MJPEG sur cette plateforme générique en faisant varier
    21 les paramètres dont on dispose. Cette ''exploration architecturale'' est le but réel de l'outil DSX.
     22La seconde partie de ce TP vise à déployer l'application MJPEG sur cette
     23plateforme générique en faisant varier les paramètres dont on dispose. Cette
     24''exploration architecturale'' est le but réel de l'outil DSX.
    2225
    2326= 1. Description de l'architecture générique !VgmnNoirqMulti =
    2427
    25 L'architecture !VgmnNoirqMono utilisée dans le TP2 était une architecture mono-processeur non-paramètrable.
    26 On se propose de décrire maintenant avec DSX une architecture multi-processeur générique, dont les paramètres sont :
     28L'architecture !VgmnNoirqMono utilisée dans le TP2 était une architecture
     29mono-processeur non-paramètrable.
     30
     31On se propose de décrire maintenant avec DSX une architecture multiprocesseur
     32générique (illustrée ci-contre), dont les paramètres sont :
    2733 * Le nombre de processeurs : `proc_count`
    2834 * Le nombre de bancs mémoire : `ram_count`
     
    3440Cette architecture comportera également un contrôleur de terminaux (!MultiTty).
    3541
    36 Vous pourrez vous inspirer de l'architecture [MjpegCourse/VgmnNoirqMono VgmnNoirqMono] définie
    37 dans le TP2, en n'hésitant pas à utiliser les constructions du langage Python permettant d'exprimer la généricité (tableaux, boucles, etc.).
    38 Cette architecture générique !VgmnNoirqMulti sera décrite dans un fichier DSX séparé, pour faciliter sa réutilisation.
     42Vous pourrez vous inspirer de l'architecture [MjpegCourse/VgmnNoirqMono
     43VgmnNoirqMono] définie dans le TP2, en n'hésitant pas à utiliser les
     44constructions du langage Python permettant d'exprimer la généricité (tableaux,
     45boucles, etc.)
     46Cette architecture générique !VgmnNoirqMulti sera décrite dans un fichier DSX
     47séparé, pour faciliter sa réutilisation.
    3948
    40 Pour pouvez ajouter des paramètres à la fonction définissant l'architecture. Des valeurs par défaut peuvent être spécifiées.
     49Vous pouvez ajouter des paramètres à la fonction définissant l'architecture,
     50auxquels des valeurs par défaut peuvent être spécifiées. Par exemple :
    4151{{{
    42 def VgmnNoirqMulti( proc_count, ram_count, icache_lines = 16, icache_words = 8, dcache_lines = 16, dcache_words = 8 )
     52def VgmnNoirqMulti( proc_count, ram_count, icache_lines = 16, icache_words = 8,
     53                    dcache_lines = 16, dcache_words = 8 )
    4354}}}
    4455
    45 Vous validerez cette architecture générique !VgmnNoirqMulti, en déployant l'application MJPEG sur
    46 une instance particulière de cette architecture équivalente à celle utilisée dans le TP2 (c'est à dire un seul
    47 processeur et deux bancs mémoire). On utilisera le système d'exploitation embarqué Mutek/S.
    48 On utilisera deux bancs mémoire, et des caches de 16 lignes de 8 mots.
     56Vous validerez cette architecture générique !VgmnNoirqMulti, en déployant
     57l'application MJPEG sur une instance particulière de cette architecture,
     58équivalente à celle utilisée dans le TP2 : c'est à dire un seul processeur et
     59deux bancs mémoire. Pour l'architecture matérielle, vous spécifierez des caches
     60processeurs de 16 lignes de 8 mots, et pour la partie logicielle, vous
     61utiliserez le système d'exploitation embarqué Mutek/S.
    4962
    50 On instanciera l'architecture avec la ligne (les paramètres non spécifiés prennent leurs valeurs par défaut):
     63
     64Vous instancierez l'architecture avec la ligne (les paramètres non spécifiés
     65prennent leurs valeurs par défaut) :
    5166{{{
    5267archi = VgmnNoirqMulti( proc_count = 1, ram_count = 2 )
    5368}}}
    5469
    55 [[Image(MjpegCourse:q.gif)]] Q1: Combien faut-il de cycles pour décompresser 25 images?
     70[[Image(MjpegCourse:q.gif)]] Q1 : Combien faut-il de cycles pour décompresser 25 images?
    5671
    5772= 2. Exploration Architecturale =
    5873
    59 Dans cette seconde partie, on va déployer l'application MJPEG sur l'architecture MPSoC !VgmnNoirqMulti.
    60 On va principalement faire varier le nombre de processeurs et la répartition des tâches logicielles sur les
    61 processeurs. Les deux tâches d'entrée/sortie  `tg` et `ramdac` sont toujours implantées sur des
    62 coprocesseurs matériels spécialisés, et il ya donc 5 tâches "logicielles" à déployer sur un nombre de processeurs
    63 qui reste à déterminer.
     74Dans cette seconde partie, on va déployer l'application MJPEG sur
     75l'architecture MPSoC !VgmnNoirqMulti.
     76Vous ferez principalement varier le nombre de processeurs et la répartition des
     77tâches logicielles sur les processeurs. Les deux tâches d'entrée/sortie  `tg`
     78et `ramdac` restent pour le moment implantées sur des coprocesseurs matériels
     79spécialisés : il y a donc 5 tâches "logicielles" à déployer sur un nombre de
     80processeurs qui reste à déterminer.
    6481
    6582== 2.1 Profilage de l'application ==
    6683
    67 Pour guider la répartition des tâches sur les processeurs, on commence par effectuer un profilage
    68 de l'application sur station de travail POSIX, en mesurant les temps passés dans les différentes tâches.
     84Pour guider la répartition des tâches sur les processeurs, on commence par
     85effectuer un profilage de l'application sur station de travail POSIX, en
     86mesurant les temps passés dans les différentes tâches.
    6987
    70 On prend comme charge relative entre les tâches les valeurs suivantes:
     88Ce profilage nous donne, comme charge relative entre les tâches, les valeurs
     89suivantes :
    7190
    7291|| idct || 45% ||
     
    7695|| libu || 3% ||
    7796
    78 [[Image(MjpegCourse:q.gif)]] Q2: Qu'en déduisez-vous sur les façons optimales de déployer MJPEG sur 2, 3, 4 et 5 processeurs ?
     97[[Image(MjpegCourse:q.gif)]] Q2 : Qu'en déduisez-vous sur les façons optimales
     98de déployer MJPEG sur 2, 3, 4 et 5 processeurs ?
    7999
    80100== 2.2 Déploiement sur une architecture à 5 processeurs ==
    81101
    82 Déployez l'architecture MJPEG sur une architecture !VgmnNoirqMultiPro comportant cinq processeurs,
    83 (c'est à dire une tâche par processeur) et lancez la simulation.
     102Déployez l'architecture MJPEG sur une architecture !VgmnNoirqMultiPro
     103comportant cinq processeurs, (c'est à dire une tâche par processeur) et lancez
     104la simulation.
    84105
    85 [[Image(MjpegCourse:q.gif)]] Q3: Combien faut-il de cycles pour décompresser 25 images?
     106[[Image(MjpegCourse:q.gif)]] Q3 : Combien faut-il de cycles pour décompresser 25 images?
    86107
    87108On cherche maintenant à estimer le taux d'utilisation de chacun des 5 processeurs.
    88109
    89 [[Image(MjpegCourse:q.gif)]] Q5: Quel est selon vous le processeur le plus chargé ?
     110[[Image(MjpegCourse:q.gif)]] Q5 : Quel est selon vous le processeur le plus chargé ?
    90111
    91112== 2.3 Déploiement sur des architectures à 4, 3 et 2 processeurs ==
    92113
    93 Déployez l'application MJPEG sur des architectures matérielles comportant 4, puis 3, puis 2 processeurs,
    94 en utilisant les informations données sur les charges de chacune des tâches,
    95 placez ''intelligemment'' les tâches de façon à obtenir les temps de décompression les plus courts possibles.
     114Déployez l'application MJPEG sur des architectures matérielles comportant 4,
     115puis 3, puis 2 processeurs, en utilisant les informations données sur les
     116charges de chacune des tâches. Pour cela, placez ''intelligemment'' les tâches
     117de façon à obtenir les temps de décompression les plus courts possibles.
    96118
    97 [[Image(MjpegCourse:q.gif)]] Q6: Quel est le nombre de cycles minimal pour décompresser 25 images avec 4 processeurs ?
     119[[Image(MjpegCourse:q.gif)]] Q6 : Quel est le nombre de cycles minimal pour
     120décompresser 25 images avec 4 processeurs ?
    98121
    99 [[Image(MjpegCourse:q.gif)]] Q7: Quel est le nombre de cycles minimal pour décompresser 25 images avec 3 processeurs ?
     122[[Image(MjpegCourse:q.gif)]] Q7 : Quel est le nombre de cycles minimal pour
     123décompresser 25 images avec 3 processeurs ?
    100124
    101 [[Image(MjpegCourse:q.gif)]] Q8: Quel est le nombre de cycles minimal pour décompresser 25 images avec 2 processeurs ?
     125[[Image(MjpegCourse:q.gif)]] Q8 : Quel est le nombre de cycles minimal pour
     126décompresser 25 images avec 2 processeurs ?
    102127
    103128== 2.4 Influence de la taille des caches ==
    104129
    105 On souhaite maintenant évaluer l'influence de la taille des caches sur le temps de décompression.
    106 Utilisez la ligne de commande de votre description pour lui passer systématiquement la taille des caches:
     130On souhaite maintenant évaluer l'influence de la taille des caches processeurs
     131sur le temps de décompression. Utilisez la ligne de commande de votre
     132description pour lui passer systématiquement la taille des caches :
    107133{{{
    108134# debut du fichier de description
     
    114140icache_lines = int(sys.argv[2])
    115141}}}
    116 Utilisez ensuite les deux variables dcache_lines et icache_lines.
     142Utilisez ensuite les deux variables `dcache_lines` et `icache_lines` dans votre
     143description.
    117144
    118 On se place dans l'hypothèse d'une architecture à 2 processseurs, en conservant le placement
    119 des tâches optimal défini à la question précédente. On utilisera des lignes de cache de 8 mots, et on se contentera de
    120 faire varier le nombre de lignes.
    121  * Mesurez le temps de calcul pour décompresser 2 images, en utilisant deux "gros"
    122    caches de 1024 lignes, pour les instructions comme pour les données.
     145On se place dans l'hypothèse d'une architecture à 2 processseurs, en conservant
     146le placement des tâches optimal défini à la question précédente. On utilisera
     147des lignes de cache de 8 mots, et on se contentera de faire varier le nombre de
     148lignes.
     149 * Mesurez le temps de calcul pour décompresser 2 images, en utilisant deux
     150 "gros" caches de 1024 lignes, pour les instructions comme pour les données.
    123151 * Refaites cette mesure en diminuant progressivement le nombre de lignes du
    124    cache de données (256, puis 64, puis 16 puis 4 puis 1), en conservant une
    125    capacité de 1024 lignes pour le cache d'instructions.
    126  * Même question en diminuant progressivement le nombre de lignes du cache d'instructions
    127    (256, puis 64, puis 16 puis 4 puis 1), en conservantune capacité de 1024 lignes pour le cache de données.
     152 cache de données (256, puis 64, 16, 4 et enfin, 1), en conservant une capacité
     153 de 1024 lignes pour le cache d'instructions.
     154 * Même question en diminuant progressivement le nombre de lignes du cache
     155 d'instructions (256, puis 64, 16, 4, et enfin 1), en conservantune capacité de
     156 1024 lignes pour le cache de données.
    128157
    129 [[Image(MjpegCourse:q.gif)]]Q9: Regroupez ces résultats dans deux tableaux de synthèse.
     158[[Image(MjpegCourse:q.gif)]]Q9 : Regroupez ces résultats dans deux tableaux de
     159synthèse.
    130160
    131 [[Image(MjpegCourse:q.gif)]]Q10: Que choisiriez-vous comme capacité pour les caches, sachant
    132 que la surface de la mémoire embarquée est un facteur important du coût de fabrication
    133 (on comparera en particulier la capacité des caches à la capacité des bancs mémoire `ram0` et `ram1`).
     161[[Image(MjpegCourse:q.gif)]]Q10 : Que choisiriez-vous comme capacité pour les
     162caches, sachant que la surface de la mémoire embarquée est un facteur important
     163du coût de fabrication (vous comparerez en particulier la capacité des caches à
     164la capacité des bancs mémoire `ram0` et `ram1`).
    134165
    135166= 3. Compte-Rendu =
    136167
    137 Comme pour les TP précédents, vous rendrez une archive contenant:
     168Comme pour les TP précédents, vous rendrez une archive contenant les fichiers
     169suivants :
    138170{{{
    139171$ tar tzf binome0_binome1.tar.gz
     
    148180}}}
    149181
    150 Le fichier `mjpeg.py` sera celui de la partie 2.4, avec la gestion de la ligne de commande.
    151 Les deux sources C sont ceux des deux derniers TP, éventuellement modifiés.
     182Le fichier `mjpeg.py` sera celui de la partie 2.4, avec la gestion de la ligne
     183de commande. Les deux sources C sont ceux des deux derniers TP, éventuellement
     184modifiés.
    152185
    153 Cette archive devra être livrée avant le jeudi 22 octobre 2009, 18h00 CEST (Paris) à [MailAsim:nipo Nicolas Pouillon]
     186Cette archive devra être livrée avant le jeudi 6 janvier 2011, 18h00 (heure de
     187Paris) à [MailAsim:joel.porquet Joël Porquet]
    154188
    155189= Suite =
    156190
    157 TP Suivant: MjpegCourse/Multipipe
     191TP Suivant : MjpegCourse/Multipipe