• Aucun résultat trouvé

Analyse Hydrologique des Terrains

2.3 Parallélisation de modèles de directions d’écoulements

En hydrologie, la parallélisation de modèles de directions d’écoulements a été seulement étudiée dans la contribution de [Wallis 2009]. Les auteurs ont proposé une implémentation parallèle du modèle D8 en se basant sur une file d’attente afin d’éviter la récursion pendant le calcul des flots d’accumulations. Cette implémenta-tion est réalisée sur un machine à mémoire distribuée. Elle répartit le MNT sur les processeur sous la forme de blocs de lignes. Des synchronisations sont nécessaires entre les processeurs afin de maintenir en cohérence les valeurs des pixels au bords des blocs distribuées.

Après avoir traité le MNT pour élimination des puits (voirSection2.1.2), qui créeraient des cuvettes d’où l’eau ne sortirait pas vers son exutoire global, et des plateaux (voir [Garbrecht 1997]), qui introduiraient des ambiguïtés, l’algorithme de Tarboton est utilisé pour le calcul des directions d’écoulements (cf.Algorithme2).

Il s’agit d’un algorithme parallèle sans synchronisation ni communication. Chaque processeur traite son bloc de données indépendamment des autres.

Algorithme 2:Calcul parallèle des directions d’écoulements

1 Initialiser ;

2 for(∀p∈Di)do

3 if (pn’est pas déterminié la direction d’écoulements) then

4 for(∀nest les voisins dep)do

5 sélectionnerntel que PENTE(p,n) est maximum et plus grand que 0 ;

6 end

7 end

8 end

9 F(i)←direction versn;

Afin de calculer des flots d’accumulations, les auteurs ont proposé une structure de données s’appelant le graphe de dépendances noté iciGD. Il s’agit d’un graphe

2.4. Conclusion 39 orienté encodant la dépendance de chaque pixel p vis-à-vis de ses voisins. Un arc allant de q vers p indique que le voisin q s’écoule vers p. Avec cette structure, il est aisé de connaître combien de pixels voisins s’écoulent versp. Cette information est nommée valeur de dépendance, elle est stockée pour chaque pixel p, elle est notée :GD[p]. Il faut connaître les valeurs des flots d’accumulation deGD[p]pixels voisins pour pouvoir calculer le flot d’accumulation de p. Chaque processeur gère non seulement un graphe de dépendances restreint à son sous-domaine mais aussi deux graphes tamponsGDThautetGDTbasafin de se communiquer des dépendances des pixels avec leurs voisins en haut et ceux en bas.

Chaque processeur crée sa propre queue Qi. Initialement tous les pixelsp∈Di

dont la valeur de dépendances est égale à zéro (GDi[p] = 0) sont insérés dans cette queue. La valeur du flot d’accumulation de ces pixel est connue, elle vaut 1.Cette phase est complètement parallèle et sans synchronisation. Le calcul des flots d’accumulation commence ainsi : chaque processeur trouve dans sa queue un pixel p, s’écoulant vers un voisin n. La dépendance de n dans le GDi qui valait GDi[n] = β est alors mise à jour en la décrémentant de un. Cela signifie que la valeur du flot d’accumulation du pixel nest encore dépendante de la connaissance de GDi[n] = β −1 pixels. Si toutefois après décrémentation, GDi[n] est égal à zéro, alors son flots d’accumulation peut être calculé, c’est la somme des flots de ces voisins dans le GDi plus 1. Puis le pixel n est inséré à la queue Qi. Dans le cas où le voisin n de p n’appartient pas au domaine considéré Di, la dépendance de n ne peut être décrémentée sur GDi, la mise décrémentation est réalisée sur leGDThaut ou leGDTbas.Lorsque Qi est vide, la communication des dépendances entre des processeurs voisins est réalisée. Chaque processeur met à jour son graphe de dépendances en fonction de deux graphes tampons reçus. Les pixels dont la dépendance est égale à zéro sont alors insérés dans Qi. Le traitement des pixels dansQi est répété comme dans la phase précédente. L’algorithme parallèle s’arrête lorsque toutes les queues de tous les processeurs sont vides après avoir mis à jour le GDi à partir de la communication des deux graphes de tampons.

Une contrainte importante de l’implémentation de ce code est que pour chaque processeur, la queue localeQicontient, à tout moment, tous les pixels deDidont la dépendance est égale à zéro.Ceci peut conduire à l’utilisation d’une grande quantité de mémoire pour stocker ces pixels dans la phase initiale.

2.4 Conclusion

Dans ce chapitre nous avons présenté les différentes méthodes proposées en hy-drologie afin de calculer la directions de l’eau sur le terrain puis d’en déduire les flots d’accumulation. En présentant les méthodes séquentielles nous avons montré l’im-portance de la préparation des données afin de supprimer les incohérences liées aux données. Nous avons vu que ces modifications d’homotopie sont souvent nécessaires pour le bon déroulement des algorithmes. Les hydrologues prennent grand soin d’af-finer l’analyse en proposant des schémas à multiple directions d’écoulements ou en

essayant de déduire les écoulement les plus réalistes possible même quand il n’existe par de données ou que les zones sont plates. Sans nier l’importance des ces raffine-ments nous proposons d’utiliser un modèle classique de type D8 afin de montrer la faisabilité d’une parallélisation efficace sans pour autant prendre partie pour l’un des raffinements chers au hydrologues. Nous pouvons aussi résoudre le problème des zones plates ou vides en choisissant arbitrairement une direction à privilégier tout en laissant la possibilité aux hydrologues d’implanter la méthode qui leur paraît la plus pertinente au sein de notre solution.

C’est une solution de type D8 qui est proposée dans le SIG GRASS avec les implémentations de TerraFlow et TerraStream qui tentent en particulier de relever le défi posé par les données massives. Nous retenons de ces approches l’idée de l’utilisation d’un graphe de cuvettes permettant d’alléger considérablement la charge de calcul, toutefois ces approches sont axées sur les machines séquentielles.

Les tentatives parallélisation de ces problèmes sont rares et se heurtent à la quantité d’espace mémoire nécessaire pour stocker les structures de données indis-pensables pour le calcul des flots d’accumulation en chaque pixel. Il apparaît donc intéressant de coupler une parallélisation efficace avec l’utilisation d’un graphe de cuvette afin de réduire l’empreinte mémoire .

Enfin il apparaît que les méthodes présentées déduisent les bassins versants à partir des flots d’accumulation et non l’inverse. Elles ne peuvent donc pas accélérer le calcul des flots d’accumulation en réalisant les additions des contributions des différents bassins versants ce qui pourrait constituer une piste intéressante. De même le graphe de cuvettes de TerraStream ne représente les bassins versants qu’au seul niveau des cuvettes, alors qu’il pourrait être étendu à de plus vastes bassins versants.

Ce serait possible à condition d’être capable de rassembler les cuvettes entre elles.

Pour réaliser ce type de manipulations il est intéressant d’étudier les méthodes de l’analyse d’image ce qui est réalisé dans le chapitre suivant.

Chapitre 3

Ligne de Partage des Eaux dans la