Analyse quantitative du paysage visible avec le logiciel PixScape et utilisation des ressources HPC (multicore, GPU ou cluster) Yohan Sahraoui 1,2, Gilles Vuidel 1 1 UBFC, CNRS,ThéMA UMR 6049 2 UBFC, CNRS, MSHE C.N. Ledoux USR 3124
Introduction Modéliser le paysage visible S immiscer dans un environnement paysager reconstruit à partir des données spatiales Capter une information potentiellement visible par des observateurs virtuels parcourant l espace
Introduction Modéliser le paysage visible S immiscer dans un environnement paysager reconstruit à partir des données spatiales Capter une information potentiellement visible par des observateurs virtuels parcourant l espace Exemples d application Evaluations paysagères (diagnostics paysagers, évaluation de la qualité esthétique du paysage, etc.) Etudes d impacts d aménagement (infrastructures de transport, développement urbain, parcs éoliens, etc.)
Introduction Modéliser le paysage visible S immiscer dans un environnement paysager reconstruit à partir des données spatiales Capter une information potentiellement visible par des observateurs virtuels parcourant l espace Exemples d application Evaluations paysagères (diagnostics paysagers, évaluation de la qualité esthétique du paysage, etc.) Etudes d impacts d aménagement (infrastructures de transport, développement urbain, parcs éoliens, etc.) Positionnement par rapport aux logiciels existants Systèmes d Information Géographiques (SIG) commerciaux et grand public Facilité de prise en main pour un professionnel Fonctionnalités restreintes Programmes «prototype» de laboratoire Fonctionnalités avancées et spécifiques à des problématiques données Pas de diffusion à un large public
Introduction Modéliser le paysage visible S immiscer dans un environnement paysager reconstruit à partir des données spatiales Capter une information potentiellement visible par des observateurs virtuels parcourant l espace Exemples d application Evaluations paysagères (diagnostics paysagers, évaluation de la qualité esthétique du paysage, etc.) Etudes d impacts d aménagement (infrastructures de transport, développement urbain, parcs éoliens, etc.) Positionnement par rapport aux logiciels existants Systèmes d Information Géographiques (SIG) commerciaux et grand public Facilité de prise en main pour un professionnel Fonctionnalités restreintes Programmes «prototype» de laboratoire Fonctionnalités avancées et spécifiques à des problématiques données Pas de diffusion à un large public Proposition d un outil logiciel open-source intégrant l ensemble des fonctionnalités existantes
Données spatiales 3 types de données spatiales numériques en entrée Mode d occupation du sol (MOS) Caractérisation de la couverture de la surface d'un territoire Modèle numérique d élévation (MNE) Caractérisation du développement vertical des objets pouvant cacher la vue Modèle numérique de terrain (MNT) Reconstitution de l architecture physique du paysage Seule information indispensable à la création d un projet dans PixScape Analyses en 2D ½ et non en 3D
Analyses planimétriques Méthode des rayons divergents (Fisher, 1996, Joly et al. 2009) Simulation du regard d un observateur virtuel autour de lui et mesure de la quantité d espace visible
Analyses planimétriques Méthode des rayons divergents (Fisher, 1996, Joly et al. 2009) Simulation du regard d un observateur virtuel autour de lui et mesure de la quantité d espace visible
Analyses tangentielles Méthode des surfaces angulaires (Germino et al., 2011) Mesure du paysage visible dans la rétine d un observateur virtuel à partir du développement vertical des objets du paysage Surface angulaire de l objet ABCD = (AOB) (AOD) où O correspond à la rétine de l observateur
Analyses tangentielles Méthode des surfaces angulaires (Germino et al., 2011) Mesure du paysage visible dans la rétine d un observateur virtuel à partir du développement vertical des objets du paysage Surface angulaire de l objet ABCD = (AOB) (AOD) où O correspond à la rétine de l observateur
Calcul de métriques de visibilité Principe de calcul des métriques de visibilité Calcul de métriques de visibilité 1. Métriques de composition Part des différentes catégories d OS Diversité (indice de Shannon) 2. Métriques de configuration Fragmentation du paysage (CONTAG / IJI) Configuration de la ligne d horizon Ouverture Texture
Calcul de métriques de visibilité Principe de calcul des métriques de visibilité Calcul de métriques de visibilité 1. Métriques de composition Part des différentes catégories d OS Diversité (indice de Shannon) 2. Métriques de configuration Fragmentation du paysage (CONTAG / IJI) Configuration de la ligne d horizon Ouverture Texture
Calcul de métriques de visibilité Principe de calcul des métriques de visibilité Calcul de métriques de visibilité 1. Métriques de composition Part des différentes catégories d OS Diversité (indice de Shannon) 2. Métriques de configuration Fragmentation du paysage (CONTAG / IJI) Configuration de la ligne d horizon Ouverture Texture
Calcul de métriques de visibilité Principe de calcul des métriques de visibilité Calcul de métriques de visibilité 1. Métriques de composition Part des différentes catégories d OS Diversité (indice de Shannon) 2. Métriques de configuration Fragmentation du paysage (CONTAG / IJI) Configuration de la ligne d horizon Ouverture Texture
Calcul de métriques de visibilité Principe de calcul des métriques de visibilité Calcul de métriques de visibilité 1. Métriques de composition Part des différentes catégories d OS Diversité (indice de Shannon) 2. Métriques de configuration Fragmentation du paysage (CONTAG / IJI) Configuration de la ligne d horizon Ouverture Texture
Pixscape Pixscape est développé en Java et implémente 3 méthodes de parallélisation utilisables sur le mésocentre Thread : plusieurs coeurs/processeurs sur une même machine MPI : plusieurs coeurs/processeurs sur plusieurs machines GPU (CUDA) : une (ou plusieurs) carte graphique contenant des milliers de petits coeurs sur une machine 1 / 9
Parallélisation Parallélisation simple sans dépendance : map-reduce. Développement d une couche d abstraction pour la parallélisation Thread/MPI même code pour les 2 types de parallélisation Le GPU demande un développement spécifique 2 / 9
Parallélisation La parallélisation ne se fait pas au même niveau de l algorithme : Thread/MPI : chaque coeur calcule le bassin de visibilité d un point et les métriques GPU : le calcul du bassin de visibilité est parallélisé, chaque coeur calcule un rayon pour être efficace, il faut paralléliser aussi les métriques 3 / 9
GPU Parallélisation des métriques difficile. Exemple, la somme d un tableau en CUDA (métrique A) 1 s h a r e d i n t s d a t a [NCORE ] ; 2 unsigned i n t t i d = t h r e a d I d x. x ; 3 unsigned i n t i = b l o c k I d x. x NCORE + t i d ; 4 unsigned i n t g r i d S i z e = NCORE griddim. x ; 5 s d a t a [ t i d ] = 0 ; 6 w h i l e ( i < n ) { 7 s d a t a [ t i d ] += g i d a t a [ i ] ; i += g r i d S i z e ; 8 } 9 s y n c t h r e a d s ( ) ; 10 i f (NCORE >= 512) { i f ( t i d < 256) { s d a t a [ t i d ] += s d a t a [ t i d + 2 5 6 ] ; } s y n c t h r 11 i f (NCORE >= 256) { i f ( t i d < 128) { s d a t a [ t i d ] += s d a t a [ t i d + 1 2 8 ] ; } s y n c t h r 12 i f (NCORE >= 128) { i f ( t i d < 64) { s d a t a [ t i d ] += s d a t a [ t i d + 6 4 ] ; } s y n c t h r e a 13 i f ( t i d < 32) { 14 s d a t a [ t i d ] += s d a t a [ t i d + 3 2 ] ; 15 s y n c t h r e a d s ( ) ; 16 s d a t a [ t i d ] += s d a t a [ t i d + 1 6 ] ; 17 s y n c t h r e a d s ( ) ; 18 s d a t a [ t i d ] += s d a t a [ t i d + 8 ] ; 19 s y n c t h r e a d s ( ) ; 20 s d a t a [ t i d ] += s d a t a [ t i d + 4 ] ; 21 s y n c t h r e a d s ( ) ; 22 s d a t a [ t i d ] += s d a t a [ t i d + 2 ] ; 23 s y n c t h r e a d s ( ) ; 24 s d a t a [ t i d ] += s d a t a [ t i d + 1 ] ; 25 } 26 i f ( t i d == 0) 27 g o d a t a [ b l o c k I d x. x ] = s d a t a [ 0 ] ; 4 / 9
Performances Métrique IJI non implémentée en CUDA 5 / 9
Performances 6 / 9
Intérêts Thread : solution la plus simple à mettre en oeuvre, fonctionne partout MPI : solution la moins limitée en puissance de calcul GPU : plus économique (et écologique!) 7 / 9
Limites Thread : plus faible en capacité de calcul MPI : gestion mémoire délicate avec Java GPU : mise en oeuvre plus lourde, pour une bonne exécution, demande de coder chaque métrique en code GPU 8 / 9
GPU? GPU plus économique en exécution mais plus long en développement! Passer de CUDA à OpenCL pour une utilisation plus large (GPU, Xeon Phi,...) 9 / 9