14 Mohammedia, 22-23 Mai 2014 -332- Architecture Massivement Parallèle (GPU) Noureddine AITALI 1 , Bouchaib CHERRADI 2 2 CRMEF El Jadida, Maroc. 1,2 Labo: Signaux, Systèmes Distribués et Intelligence Artificielle (SSDIA), ENSET Mohammedia, Maroc. Omar BOUATTANE 1 , Mohamed YOUSSFI 1 & Abdelhadi RAIHANI 1 aitali_noureddine@yahoo.fr, Cherradi1@hotmail.com med@youssfi.net, o.bouattane@gmail.com, abraihani@yahoo.fr Résumé GPUs en traitement d'images et surtout dans le domaine de la segmentation, ensuite, nous proposons une implémentation de me de classification K-means sur une architecture massivement parallèle consistant en un GPU de Nvidia, en Unified Device Architecture) de NVIDIA. Une application de on des images IRM cérébrales 2D et 3D sera présentée. A travers le suivi des différents paramètres Mots Clés; Segmentatio s, IRM, algorithme K-means, Traitement massivement parallèle, GPU, GPGPU, CUDA. I. INTRODUCTION Récemment, les unités de traitement graphique (GPU: Graphic Processor Unit) ont émergé comme unités de co -traitement pour les unités centrales de traiteme nt (CPU : Central Processing Unit) et ceci pour accélérer diverses applications numériques, entre autres celles de traitement de signaux. Les GPUs découplés, capables de réaliser une immense puissanc e de calcul parallèle. Pour profiter de ces architectures multi- ces applications doivent être parallélisées. Parmi les techniques les plus utilisées en segmentation classification, les ensembles de niveau [1], les contours actives (snakes) [2], les algorithmes de croissance de régions [ 3], la transformée en lignes de partage des eaux [ 4], la segmentation par recalage sur des modèles ou atlas et la segmentation sur la base de modèles statistiques de forme [5,6]. Au cours des dernières années, de nombreux travaux sur les implémentations CUDA d'une grande variété d'algorithmes de segmentation ont été publiées. Dans [7] on trouve une revue assez récente des différentes techniques utilisées en tr aitement Dans le cadre des approches de bas niveau, qui ne nécessitent pas d'informations statistiques sur les types d'objets dans l'image, et manipulent directement l'information «pixel/voxel» pour former des régions connexes, les auteurs de [8], par exemple, ont proposés une implémentation de l e de clustering par k-means pour l'analyse d'images histopathologiques. Après avoir proposé une implémentation sur un émulateur de machine parallèle (Maille Connexe Reconfigurable) [9], de -means [10], nous proposons dans cet article une conception et implémentation du même algorithme mais cette fois sur une architecture parallèle réelle qui est le GPU. Le reste du papier est organisé comme suit : Dans le paragraphe 2 nous s développement CUDA, le paragraphe 3 contient le schéma paragraphe 4 est consacré à la présentation de quelques résultats préliminaires images IRM cérébrales. Une conclusion et des perspectives à ce travail seront présentées au paragraphe 5. II. ARCHITECTURE MASSIVEMENT PARALLELE ET ENVIRONNEMENT DE TRAVAIL A. Architecture générale des GPUs Nvidia. Les GPU modernes sont des processeurs massivement parallèles qui prennent en charge un grand nombre de Processeurs élémentaires. Ils sont particulièrement bien adaptés pour explorer les calculs sur de nombreux types de données q ui ont une haute intensité arithmétique. Actuellement, l'architecture de des flux (SM, Streaming Multiprocessor (architecture Fermi) ou SMX : next-generation Streaming Multiprocessor(architecture Kepler)). Un tel multiprocesseur contient, entre autres, un d'instruction multiprocessus, un certain nombre de registres, une mémoire locale et une mémoire partagée (figure 1). Le nombre de multip l'architecture et le modèle du GPU. La caractéristique fondamentale du GPU, c'est qu'il a une architecture massivement parallèle qui prend en charge un grand nombre de threads à grains fin. De cette manière, l'al gorithme parallèle proposé affecte le traitement de chaque pixel de l'image à un thread. Ce schéma de parallélisation exploite la capacité de calcul massive des GPU et fournit également un bon équilibrage de charge, car chaque thread exécute la même quantité de calcul.