Algorithmes évolutionnaires sur. et GPU. Introduction : GPU et puissance calculatoire Principe du GPU : le pipeline



Documents pareils
Initiation au HPC - Généralités

Une bibliothèque de templates pour CUDA

Eternelle question, mais attention aux arnaques Question qui est souvent mise en premier plan => ce n est pas une bonne idée

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

Segmentation d'images à l'aide d'agents sociaux : applications GPU

Architecture des ordinateurs

Introduction à CUDA.

Limitations of the Playstation 3 for High Performance Cluster Computing

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Systèmes et traitement parallèles

Outil d aide au choix Serveurs Lot 4 Marché Groupement de Recherche

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Évaluation et implémentation des langages

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Logiciel MAXPRO NVR SOLUTION D ENREGISTREMENT VIDÉO RÉSEAU

Métriques de performance pour les algorithmes et programmes parallèles

Exécution des instructions machine

*Offre limitée au stock disponible - Prix affichés basés sur une TVA française de 19.6%.

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Rendu temps réel de mer et de nuages

Communications performantes par passage de message entre machines virtuelles co-hébergées

Comparatif entre Matrox RT.X2 et Adobe Premiere Pro CS3 (logiciel seul)

Pré-requis installation

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

en version SAN ou NAS

Matériel & Logiciels (Hardware & Software)

Choisir le bon ordinateur. et la bonne imprimante en avec. Les prix bas, la confiance en plus

Portable Dell Alienware M18X

Architecture des Ordinateurs. Partie II:

Dell Vostro 3350/3450/3550/3750

Pré-requis installation

Intel Corporation Nicolas Biguet Business Development Manager Intel France

Ordinateur portable Latitude E5410

Documentation d information technique spécifique Education. PGI Open Line PRO

Architecture des calculateurs

Linux embarqué: une alternative à Windows CE?

Parallélisme et Répartition

CH.3 SYSTÈMES D'EXPLOITATION

TVTools Cloud Edition

Tests de performance du matériel

Vers du matériel libre

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

TPs Architecture des ordinateurs DUT Informatique - M4104c SUJETS. R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr

vbladecenter S! tout-en-un en version SAN ou NAS

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Poste de travail d enregistreur vidéo en réseau

Tout savoir sur le matériel informatique

Quantification d incertitude et Tendances en HPC

Spécifications détaillées

Le Programme SYGADE SYGADE 5.2. Besoins en équipement, logiciels et formation. UNCTAD/GID/DMFAS/Misc.6/Rev.7

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Choix d'un serveur. Choix 1 : HP ProLiant DL380 G7 Base - Xeon E GHz

T E C S O F T 775,00 TTC 645,83 HT

nom : Collège Ste Clotilde

. Plan du cours. . Architecture: Fermi ( ), Kepler (12-?)

Pré-requis installation

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Le programme détaillé. Salle A07 Salle A06 Salle A04. Initiation à DirectX. Création de Mods Minecraft

Présentation du module Base de données spatio-temporelles

Introduction au calcul parallèle avec OpenCL

Journée Utiliateurs Nouvelles du Pôle ID (Informatique) Pierre Neyron, LIG/CNRS

Potentiels de la technologie FPGA dans la conception des systèmes. Avantages des FPGAs pour la conception de systèmes optimisés

NVR Fusion IV. Pour quels marchés? Caractéristiques Matériel. Logiciel

Rapport de stage Master 2

GPGPU. Cours de MII 2

Retour d expérience, portage de code Promes dans le cadre de l appel à projets CAPS-GENCI

victor Logiciel de gestion pour une sécurité unifiée

IN SYSTEM. Préconisations techniques pour Sage 100 Windows, MAC/OS, et pour Sage 100 pour SQL Server V16. Objectif :

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

FICHE PRODUIT 360 SPEECHMAGIC SDK

á Surveillance en temps réel á Contrôle PTZ á Enregistrement

Configuration système requise pour les grandes et moyennes entreprises

Gestion de scène pour les moteurs 3D

LA RECONNAISSANCE VOCALE INTEGREE

Les tablettes. Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration

Rapport 2014 et demande pour Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121

Technologie de déduplication de Barracuda Backup. Livre blanc

Séminaire RGE REIMS 17 février 2011

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Initiation. àl algorithmique et à la programmation. en C

Leçon 1 : Les principaux composants d un ordinateur

T. Gasc 1,2,3, F. De Vuyst 1, R. Motte 3, M. Peybernes 4, R. Poncet 5

Fonctionnement et performance des processeurs

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

DUT. Informatique, orientation Imagerie Numérique. Domaine : Sciences, Technologies, Santé. Mention : Informatique

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

Configuration matérielle et logicielle requise et prérequis de formation pour le SYGADE 6

Ne laissez pas le stockage cloud pénaliser votre retour sur investissement

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Génération de code binaire pour application multimedia : une approche au vol

PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC!

Informatique Générale

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Transcription:

Algorithmes évolutionnaires et GPU Introduction : GPU et puissance calculatoire Principe du GPU : le pipeline graphique Introduction au parallélisme de données Exemple de simulation Les langages de haut-niveau pour le GPU Accelerator, CUDA GPU et algorithmes évolutionnaires Programmation génétique sur GPU Algorithmes évolutionnaires sur GPU

Introduction Le GPU est devenu depuis années un processeur flexible, peu onéreux. Puissance Programmable Précision (float) Calculs dédiés 2

Motivation : puissance calculatoire Les GPUs sont puissants Intel Core 2 Duo 3,5 Ghz (Woodcrest Xeon) Peak Peak NVIDIA GeForce 8800 GTX Puissance 48 Gflops Bande passante21 Gbits/s Prix 900 Puissance 330 Gflops Mesuré Bande passante55,2 Gbits/s Mesuré Prix 600 Les GPUs sont de plus en plus rapides CPU : ~ x 1,4 /an GPU : ~ x 1,7 /an (pixels) à x 2,3 (vertex) 3

Aperçu de la puissance calculatoire 4

Note Pourquoi les GPUs sont de plus en plus rapides? Intensité arithmétique Les calculs sont hyper-spécialisés et par conséquent les circuits sont simples (proches du RISC) Économie L'industrie du jeu vidéo pousse à l'innovation 5

Motivations : flexibles et précis Les nouveaux GPUs sont programmables Programmation au niveau du pixel, du vertex et (bientôt) shader de géométrie Utilisation de langage de haut niveau Précision importante Précision des réels sur 32 bits dans tout le pipeline Suffisant pour la plupart des applications Bientôt en double précision 6

Problème : difficile à utiliser Les GPUs sont conçus pour les jeux vidéo L'architecture sous-jacente est : Modèle de programmation atypique Modèle de programmation très lié à la programmation graphique Basée sur le parallélisme de données En évolution rapide Relativement secrète! On ne peut pas faire simplement du portage de code 7

Le pipeline graphique Le pipeline graphique simplifié Hautement parallèle Beaucoup de caches, de FIFOs,... 8

Le pipeline graphique récent Processeur de vertex programmable (vertex shader) Pixel shader programmable 9

Processeur de vertex But : Transformation sur les vertex Rotations Déplacements Changements d'échelles... Shaders programmables Éclairage Flou... Vertex shader de réflexion/réfractio 10

Le pipeline de vertex Fixe (ensemble de matrices Programmable à fournir) V0 à v15 : vertex 11

GPU pipeline : rasterization Génération de primitives Conversion des vertex en primitives géométriques Rasterization (tramage) Génération de pixels à partir de la géométrie Pixels appelés plus généralement fragments (pixel avec données associées, profondeur, couleur,...) 12

Processeur de fragments But très simple : Le pixel pipeline reçoit un pixel, ainsi que quelques informations l'accompagnant (les coordonnées des textures, par exemple) Construire un pixel complet à partir de ces informations Le pipeline de pixels peut être fixe ou programmable (appelé pixel shader) 13

Exemple 14

Importance du data-parallélisme Les GPUs sont conçus pour le graphisme Traitement de vertex et de pixels indépendants Pas de données statiques ou partagées Traitement parallèle des données L'architecture des GPUs est basée sur une multiplications des ALUs Plusieurs processeurs de vertex et pixels La GeForce 8800 GTX a 128 ALUs 15

Applications idéales Intensité calculatoire importante Les applications doivent avoir: Ensemble important de données Beaucoup de parallélisme Très grande indépendance entre les données à traiter 16

Exemple : calcul sur une grille Programmation «classique» sur un GPU Les textures représentent la grille de calculs Beaucoup de calculs peuvent se projeter sur une grille Calcul matriciel Traitement d'images Simulation physique... 17

Vocabulaire Streams (ou grille de données) Ensemble de données nécessitant l'application du même traitement A la base du parallélisme de données Kernels Fonctions appliquées à chaque stream (transformations,...) Peu de dépendances entre les streams 18

Calcul sur GPU Calcul sur grille Réalisé en étapes Chaque étape met à jour la grille entière Chaque étape doit être terminée avant de passer à l'étape suivante La grille représente les streams, les étapes sont les kernels Algorithme de simulation de nuages 19

Ressources disponibles Processeurs programmables parallèles Processeurs de vertex et de fragments Ou conception unifiée ( GeForce 8800 GTX, ATI Xenos) Unité de texture Accès en lecture seule / écriture seule Optimisée pour l'accès en 2D 20

Processeur de vertex Programmable (SIMD) voire MIMD Traitement de vecteurs à 4 coordonnées (RGBA / XYZW) Peut réaliser un scatter mais pas un gather Peut changer la position d'un vertex Ne peut obtenir d'informations d'autres vertex Peut récupérer des informations des textures 21

Processeur de fragments Programmable en mode SIMD Traitement de vecteurs à 4 coordonnées (RGBA / XYZW) Note : la 8800 GTX est un processeur scalaire Accès en lecture aux textures Capable de gather - scatter limités? (mémoire partagée sur 8800 GTX) Adresse de sortie fixée à une adresse A priori plus utile que le processeur de vertex Plus de processeurs de fragments que de processeurs de vertex Sortie directe (sortie du pipeline) 22

CPU GPU analogies CPU GPU Stream / Tableau de donnés = Texture Lecture en mémoire = Lecture de texture 23

Kernels Kernel / Étape algorithmique = programmation du pixel shader 24

Retour de résultat Écriture du résultat = mise à jour de textures 25

Exemple N-body simulation N = 8192 corps N2 forces de gravitation 64 M forces/frame ~ 25 flops par force GeForce 8800 GTX Précision réel 16 bits : 73 fps, 122,5 Gflops Précision réel 32 bits : 39 fps, 65,4 Gflops 26

Calcul des forces gravitationnelles Chaque corps attire tous les autres corps N corps donc N2 forces Tampon de taille NxN Pixel(i,j) calcule la force entre le corps i et j Programme de fragment (pixel shader) très simple Limité par la taille maximale des textures 27

Calcul des forces gravitationnelles La force est proportionnelle à l'inverse du carré de la distance entre les corps 28

Calcul des forces gravitationnelles Les coordonnées (i,j) dans la texture gérant les forces sont utilisées pour récupérer la position des corps i et j 29

Calcul des forces gravitationnelles 30

Calcul de la force On dispose du tableau de force (i,j) On souhaite calculer la force totale soumise sur la particule i 31

Calcul de la force On dispose du tableau de force (i,j) On souhaite calculer la force totale soumise sur la particule i Sommation sur chaque colonne 32

Calcul de la force On dispose du tableau de force (i,j) On souhaite calculer la force totale soumise sur la particule i Sommation sur chaque colonne Réduction parallèle 33

Mise à jour des vitesses et positions Nous avons un tableau 1D de forces Une par corps Mise à jour de la vitesse u(i,t+dt) = u(i,t) + Ftotal(i)*dt Simple programme du pixel shader Mise à jour de la position x(i,t+dt) = x(i,t) + u(i,t)*dt Simple programme du pixel shader qui lit la position précédente et la vitesse et met à jour la nouvelle position 34

Langages de GPU de haut niveau 35

Langages de shader Cg, HLSL, OpenGL Shading Language Cg : HLSL : www.nvidia.com/cg msdn.microsoft.com/library/default.asp?url=/libr ary/enus/directx9_c/directx/graphics/reference/h ighlevellanguageshaders.asp OpenGL Shading Language : www.3dlabs.com/support/developer/ogl2/whitepa pers/index.html 36

Langages de GPGPU Pourquoi? Rendre la programmation des GPU plus simples Connaissance d'opengl, directx,... inutiles Simplification des opérations communes Travail sur l'algorithme et non sur l'implémentation 37

Quelques exemples Accelerator Brook ATI/AMD CUDA Stanford University CTM Microsoft Reseach NVIDIA Peakstream RapidMind Version commerciale améliorée de sh 38

Accelerator Programmation data-parallèle du GPU Librairie data-parallèle à la disposition du programmeur Simple, haut niveau de programmation Compilateur JIT pour le CPU ou le GPU Fonctionne avec.net 39

Bibliothèque data-parallèle Conversion explicite entre tableaux DP et tableaux «classiques» Chaque opération produit un nouveau tableau DP Pas de pointeurs et d'accès aux éléments individuels 40

Tableaux data-parallèles 41

Conversion explicite 42

CUDA et calcul sur GPU 43

Présentation Programmation data-parallèle basée sur un système de threads Plusieurs milliers de threads possibles Cache de données data-parallèle Programmation en C Bibliothèques d'algèbre linéaire et de FFT disponibles Utilisable uniquement sur GPU de type nvidia 44

Exécution basée sur les threads Programme de threads Très grand nombre d'instructions Pas de limitation sur les alternatives et les boucles Allocation des threads suivant une logique 1D, 2D ou 3D Regroupement des threads en groupes logiques appelés blocs Mémoire partagée Les blocs sont exécutés en parallèle si des grilles de processeurs 45

Les blocs Les blocs sont exécutés en parallèles si des grilles de processeurs sont disponibles Aucun ordre sur les blocs n'est garanti 46

Mémoire partagée Mémoire dédiée Partagée entre les threads et utilisée pour la communication inter-threads Manipulée de manière explicite Aussi rapide que les registres 47

Mémoire globale Mémoire générale du GPU : allocation libération de mémoire Non typée (non limitée à la manipulation de texture) Support des pointeurs 48

Modèle d'exécution 49

Exécution sur un GeForce 8800 GTX 768 Mo disponible 16 grilles de 8 processeurs 128 processeurs au total à 1,35 Ghz (675 Mhz) 16 ko par grille de mémoire partagée 32 threads minimum par bloc Cache de texture de 8 ko par grille À partir de 16 blocs, le parallélisme maximum est atteint (pour moins de 16 blocs, certaines grilles seront inoccupées) 50

Programmation C du GPU Assez simple à programmer, mais nécessite une connaissance approfondie pour une accélération optimale Extension de certains mots-clefs global void Kernelfunc(...); device int Globalvar; shared int Sharedvar; KernelFunc <<<500,128 >>>(...); 51

Mesure de temps sur GPU Exemple simple Utilisation d'une ou plusieurs grilles de multiprocesseurs ; Un fichier d'appel clock.cu exécuté sur le CPU ; Un fichier du kernel clock_kernel.cu exécuté sur le GPU 52

GPU et algorithmes évolutionnaires Wong ML, Wong TT, Fok KL: Parallel evolutionary algorithms on GPU, Proceedings of IEEE CEC 2005, vol 3, pp 2286-2293 Wong ML, Wong TT, Fok KL: Evolutionary computing on consumer-level graphics hardware, IEEE Intelligent Sytems (to appear) Yu Q, Chen C., Pan Z. : Parallel Genetic Algorithms on Programmable Graphics Hardware, LNCS 3612, 2005 Ebner M., Reinhardt M., Albert J.: Evolution of vertex and pixel shaders, EuroGP 2005, pp 261270 Harding S., Banzhaf W.: Fast Genetic Programming on GPUs, EuroGP 2007, LNCS 53 4445, pp 90-101

GP sur GPU Une unique (à ma connaissance) contribution partielle. Harding et Banzhaf 2007 Idée relativement simple Les arbres GP sont évalués pour chaque élément du jeu d'entraînement Application parallèle du jeu d'entraînement sur le GPU Pas de moteur d'évolution, l'évaluation de programmes aléatoires est réalisée sur le GPU Le tableau de jeu d'entraînement est transformé en texture et chargé sur le GPU Après l'évaluation, le résultat est transferé du 54 GPU vers le CPU

Expériences Expériences réalisées uniquement sur la phase d'évaluation Langage AcceleratorTM, parser GP écrit en C# et compilé avec Visual Studio 2005 GPU Nvidia GeForce 7300 GO (512 Mo) CPU Intel Centrino T2400 @ 1,83 Ghz 100 expressions générées aléatoirement pour calculer le facteur d'accélération (arbres a priori) Le programme du pixel shader correspond à un arbre 55

6 4 3 Fonction x 2x + x Nombre de cas de tests Longueur Maxi 10 100 1000 2000 10 0,02 0,08 0,7 1,22 100 0,07 0,33 2,79 5,16 1000 0,42 1,71 15,29 87,02 10000 0,4 1,79 16,25 95,37 Facteur d'accélération 56

Classification (2 spirales) Jeu d'entraînement Taille de l'expression 194 388 970 1940 10 0,15 0,23 0,51 1,01 100 0,38 0,67 1,63 3,01 1000 1,77 3,19 9,21 22,7 10000 1,69 3,21 8,94 22,38 57

Conclusion Peu de gains pour des jeux d'entraînement de petite taille(surcoût de transfert non négligeable) Pour des jeux de taille importante, le gain est conséquent Question ouverte : A-t-on souvent en GP l'occasion de tester des jeux d'entraînement de 10000 cas ou plus? Coût de la compilation? 58

Travaux de Fok, Wong et Wong Il s'agit de programmation évolutionnaire sur GPU Les individus sont cha rgés dans les textures Pas de recombinaison, mutation indépendante sur chaque individu 59

Représentation des individus x1 x2 x3 x4 x5 x6 x7... x32 x1 x2 x3 x4 x5 x6 x7... x32 x1 x2 x1 x2 x5 x3 x4 x3 x4 x7 x6 x5 un individu de 32 gènes correspond à 8 pixels (r,g,b, ) La mémoire est mieux utilisée avec des multiples de 4 (stockage r,g,b, ) x6 x7 h w mémoire de texture 60

Réalisation de la mutation Mutation totalement parallélisable Pour chaque individu x x ' j =x j j R 0,1 1 ' j = j exp R j 0,1 2k Deux programmes de fragment un pour générer ' un pour générer x' 61

Visualisation 62

Évaluation du fitness Réalisation totalement parallèle de l'évaluation Le programme de shader calcule le déplacement correct pour le calcul du fitness 63

Compétition et sélection Sélection stochastique à travers un tournoi entre les individus de la nouvelle génération et les parents Compétition avec q individus générés aléatoirement Ces deux opérations sont réalisées sur le CPU pas de fonction aléatoire sur le GPU transfert coûteux entre le CPU et le GPU 64

Résultats GPU CPU 800 1 2,02 3200 2,02 8,37 6400 3,04 16,75 Expériences sur Pentium IV 2,4 Ghz GeForce 6800 Ultra avec 256 Mo Temps d'exécution par rapport à une exécution avec 400 individus 65

Travaux de Yu, Chen, Pan Travaux moins avancés que le précédent Évaluation parallèle du fitness Génération des nombres aléatoires à partir d'une matrice de texture aléatoire Réalisation de la recombinaison et de la mutation sur le GPU 66

Représentation de la population 4 gènes = 1 pixel au format (r,g,b, ) 1 grille 2D de texture correspond aux quatre premiers gènes de chaque individu Il y a donc n/4 grilles de texture 2D (pour une population de n individus) Une grille supplémentaire est utilisée pour le fitness 67

Visualisation 4N gènes M M*M chromosomes M N textures 2D GPU 68

Quelques résultats 1 x 2 2 1 x 22 19.8 x 2 1 x 4 1 Taille pop 322 642 1282 2562 5122 Opérations génétiques Fitness 1,4 0,3 5,8 1,4 11,8 7,9 17,9 15,4 20,1 17,1 GAIN f x =100 x 21 x 2 2 1 x 1 2 90 x 23 x 4 2 10.1 69