Changes between Version 5 and Version 6 of SujetTP10


Ignore:
Timestamp:
Dec 8, 2014, 7:42:29 PM (10 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTP10

    v5 v6  
    5151On souhaite maintenant profiter de la présence des 8 processeurs pour accélérer une application logicielle capable de s'exécuter sur  plusieurs processeurs.
    5252
    53 On s'intéresse à une application de traitement d'image, consistant à appliquer un filtre de convolution sur chaque ligne d'une image. On considère des images possédant 128 lignes de 128 pixels. La valeur de chaque pixel est codée en niveaux de gris. Le noyau de convolution a une largeur de 9 pixels, ce qui signifie que la nouvelle valeur d'un pixel `(p)` est une moyenne pondérée sur les valeurs des 9 plus proches voisins du pixel `(p)`, dans la même ligne. Comme le traitement d'une ligne ne dépend du traitement des autres lignes, on peut partager le travail entre plusieurs processeurs.
     53On s'intéresse à une application de traitement d'image, consistant à appliquer un filtre de convolution sur chaque ligne d'une image. On considère des images possédant 128 lignes de 128 pixels. La valeur de chaque pixel est codée en niveaux de gris. Le noyau de convolution a une largeur de 9 pixels, ce qui signifie que la nouvelle valeur d'un pixel `(p)` est une moyenne pondérée sur les valeurs des 9 plus proches voisins du pixel `(p)`. Comme le traitement d'un pixel ne dépend pas du traitement des autres pixels, on peut partager le travail entre plusieurs processeurs.
    5454
    5555On suppose que l'image initiale `input[line][pixel]`, et l'image finale `output[line][pixel]` sont des variables globales stockées en mémoire dans le segment `seg_data`. Le code de la fonction `main()` et le code de la fonction `filter()` permettant de traiter une ligne sont contenus dans le fichier `main1.c`.
    5656
    57 Si on utilise un seul processeur, le même processeur effectue 128 fois le même calcul sur les 128 lignes, en appelant 128 fois la fonction `filter()`, et affiche un message lorsqu'il a terminé. Lorsqu'on utilise plusieurs processeurs, on peut paralléliser le calcul, et chaque processeur (suivant son numéro de processeur) traite un sous-ensemble des 128 blocs, et affiche un message lorsqu'il a terminé sa part du travail.
     57Si on utilise un seul processeur, le même processeur effectue 128 fois le même calcul sur les 128 lignes, en appelant 128 fois la fonction `filter() pour chaque ligne`, et affiche un message lorsqu'il a terminé. Lorsqu'on utilise plusieurs processeurs, on peut paralléliser le calcul, et chaque processeur (suivant son numéro de processeur) traite un sous-ensemble des pixels, et affiche un message lorsqu'il a terminé sa part du travail.
    5858
    5959* Modifiez le fichier `Makefile` pour générer un exécutable `app.bin` à partir de `main1.c` et exécutez l'application sur une architecture mono-processeur.