Solveur linéaire sur GPU

Documents pareils
Résolution de systèmes linéaires par des méthodes directes

Cours d analyse numérique SMI-S4

Une bibliothèque de templates pour CUDA

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Limitations of the Playstation 3 for High Performance Cluster Computing

1 Introduction et modèle mathématique

Introduction à MATLAB R

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

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Cours d Analyse. Fonctions de plusieurs variables

La classification automatique de données quantitatives

Calcul différentiel sur R n Première partie

Happy birthday ZSet High performance computing dans ZSet

Programmation linéaire

Résolution d équations non linéaires

3 Approximation de solutions d équations

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

de calibration Master 2: Calibration de modèles: présentation et simulation d

Optimisation, traitement d image et éclipse de Soleil

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Asynchronisme : Cadres continu et discret

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Rappels sur les suites - Algorithme

Chapitre 5 : Flot maximal dans un graphe

Cours 02 : Problème général de la programmation linéaire

RO04/TI07 - Optimisation non-linéaire

Fonctions de plusieurs variables

Méthodes numériques appliquées à la conception par éléments finis

Cours Informatique Master STEP

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

Programmation C. Apprendre à développer des programmes simples dans le langage C

CCP PSI Mathématiques 1 : un corrigé

Programmation linéaire et Optimisation. Didier Smets

Algorithmes pour la planification de mouvements en robotique non-holonome

Introduction à CUDA.

Théories de champ moyen et convection à grande échelle

Théorie et codage de l information

Retour d expérience RATP. Intégrer le test de performance au cœur du processus de développement agile. Challenges, techniques, résultats.

Rapport de stage Master 2

Architecture des Systèmes d Information Architecture des Systèmes d Information

Première partie. Introduction à la méthodes des différences finies

La fonction exponentielle

Exercices - Polynômes : corrigé. Opérations sur les polynômes

I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES

Sujet 1 : Diagnostique du Syndrome de l apnée du sommeil par des techniques d analyse discriminante.

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Optimisation Discrète

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Processus d Informatisation

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

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

Chapitre 2. Matrices

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Architecture des ordinateurs

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

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

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

1 Recherche en table par balayage

IV- Equations, inéquations dans R, Systèmes d équations

Examen optimisation Centrale Marseille (2008) et SupGalilee (2008)

LES MÉTHODES DE POINT INTÉRIEUR 1

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

I. Polynômes de Tchebychev

Master IAD Module PS. Reconnaissance de la parole (suite) Alignement temporel et Programmation dynamique. Gaël RICHARD Février 2008

Multiprogrammation parallèle générique des méthodes de décomposition de domaine

Performances et optimisations

Optimisation des fonctions de plusieurs variables

Vous êtes bien à la bonne présentation, c est juste que je trouvais que le titre de cette présentation étais un peu long,

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Chp. 4. Minimisation d une fonction d une variable

Texte Agrégation limitée par diffusion interne

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

NOTICE DOUBLE DIPLÔME

Figure 3.1- Lancement du Gambit

Continuité et dérivabilité d une fonction


Informatique Générale

MATHÉMATIQUES EN PREMIER CYCLE PRÉSENTATION DU PROGRAMME

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Exercice : la frontière des portefeuilles optimaux sans actif certain

4.2 Unités d enseignement du M1

EXERCICE 4 (7 points ) (Commun à tous les candidats)

Jean-Philippe Préaux

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

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Fonctions de plusieurs variables

TESTS PORTMANTEAU D ADÉQUATION DE MODÈLES ARMA FAIBLES : UNE APPROCHE BASÉE SUR L AUTO-NORMALISATION

Rencontre sur la thématique du Calcul Haute Performance - 13 juin Better Match, Faster Innovation

Programmes des classes préparatoires aux Grandes Ecoles

Saisie des chauffe-eau thermodynamiques à compression électrique

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Transcription:

Thomas JOST 1 Sylvain CONTASSOT-VIVIER 1,2 Stéphane VIALLE 1,3 1 Équipe AlGorille, LORIA 2 Université Henri Poincaré Nancy 1 3 Équipe IMS Supélec (Metz)

1 Introduction 2 Contraintes et algorithmes Structure de données Méthodes itératives Améliorations possibles 3 Performances Tests en simple précision Tests en double précision 4 Conclusion

1 Introduction 2 Contraintes et algorithmes Structure de données Méthodes itératives Améliorations possibles 3 Performances Tests en simple précision Tests en double précision 4 Conclusion

Introduction Cadre général Transport 3D d espèces chimiques dans un cours d eau Étude d algorithmes synchrones et asynchrones Cluster de GPUs Étape centrale : solveur linéaire Un système linéaire différent à résoudre à chaque itération Système de la forme Ax = b Système creux, structuré

1 Introduction 2 Contraintes et algorithmes Structure de données Méthodes itératives Améliorations possibles 3 Performances Tests en simple précision Tests en double précision 4 Conclusion

Nécessité d une nouvelle implémentation Pas de solveur existant adapté Il existe quelques projets : MAGMA, cudaztec, GPUmatrix, CNC... Aucune des solutions existantes ne convient parfaitement...il faut en écrire une nouvelle Contraintes pour le choix de la méthode Méthodes directes : précises, mais lentes peu intéressant Méthodes itératives : moins précises, mais rapides, surtout sur des matrices creuses Nombres flottants en simple précision, implémentation non standard erreurs d arrondis Problème creux : il faut une structure de données adaptée

Structure de données Structure de données Matrice creuse structurée Système de taille n avec plusieurs diagonales non vides. 0 1 4 8 Chaque diagonale est identifiée par un nombre d : tous les éléments a ij de la diagonale vérifient j i = d (modulo n).

Structure de données Structure de données Représentation en mémoire Tableau n d où chaque colonne est une diagonale de la matrice précédente ; Liste de d entiers : correspondance diagonale colonne. Schéma de stockage proche du «DIA» de LAPACK, mais mieux adapté aux contraintes mémoire des GPU. 0 1 4 8

Méthodes itératives Méthodes itératives Idée générale Calculer une suite ( x k) k N qui converge vers x Points délicats Vitesse de convergence (nombre d itérations et durée de chaque itération) mieux vaut quelque chose de rapide Occupation mémoire éviter les matrices intermédiaires Parallélisation soit des kernels simples, soit des opérations CUBLAS Simplicitié temps de debug potentiellement importants sur GPU, donc les méthodes plus simples peuvent être plus intéressantes

Méthodes itératives Algorithme de Jacobi Principe Décomposer A en D (diagonale), U (triangulaire supérieure) et L (triangulaire inférieure) : A = D + L + U x k+1 = D 1 [ b (L + U)x k] Composante par composante : ( x k+1 i = 1 b i ) a ij x k j a ii j i Converge si A est symétrique définie positive

Méthodes itératives Algorithme de Gauss-Seidel Principe Décomposer A en D (diagonale), U (triangulaire supérieure) et L (triangulaire inférieure) : A = D L U (D L)x k+1 = Ux k + b Composante par composante : ( x k+1 i = 1 b i a ii i 1 j=1 a ij x k+1 j n j=i+1 Converge si A est symétrique définie positive a ij x k j )

Méthodes itératives Algorithmes de Jacobi et de Gauss-Seidel Implémentation sur CPU : Gauss-Seidel Implémentation directe avec une boucle for ( x k+1 i = 1 b i a ii i 1 j=1 a ij x k+1 j n j=i+1 a ij x k j ) Implémentation sur GPU : Jacobi Un thread par composante ( x k+1 i = 1 b i ) a ij x k j a ii j i

Méthodes itératives Algorithme du gradient biconjugué Principe Dérive de la méthode du gradient conjugué Construction d une suite de directions conjuguées Descente suivant ces directions Converge même pour des systèmes non symétriques...mais peu de résultats théoriques Numériquement instable

Méthodes itératives Algorithme du gradient biconjugué Difficultés Utilise plusieurs vecteurs intermédiaires À chaque itération : produit par A et par sa transposée heureusement, la structure de données s y prête bien! Algorithme plus complexe une simple boucle for ne suffit pas...

Méthodes itératives Algorithme du gradient biconjugué Implémentation sur GPU Utilisation de CUBLAS pour les opérations sur les vecteurs (norme, produit scalaire, SAXPY) 2 kernels spécifiques Textures pour les accès mémoire...et beaucoup de debug!

Améliorations possibles Amélioration de la précision Émulation de double précision Utiliser deux float pour émuler un double sur GPU Bibliothèque DSFUN90 en Fortran quelqu un en a fait un portage CUDA! Calcul avec des float2 largement plus lent

Améliorations possibles Amélioration de la précision Éviter les erreurs d arrondi Lors des divisions (dans Jacobi / Gauss-Seidel) : Termes diagonaux n interviennent qu au dénominateur Calcul des inverses sur CPU, multiplication par les inverses sur GPU Somme «déséquilibrée» algorithme de sommation de Kahan Code machine (PTX) : éviter les instructions MAD fonction _fmul_rn()...

1 Introduction 2 Contraintes et algorithmes Structure de données Méthodes itératives Améliorations possibles 3 Performances Tests en simple précision Tests en double précision 4 Conclusion

Errata Partie modifiée! Les résultats présentés le 4 juin étaient erronés du fait d un bug qui n a été découvert que quelques jours plus tard. Cette partie a donc été mise à jour avec la version corrigée : courbes corrigées, avec une précision largement meilleure ; inclusion de tests sur des matrices réelles ; inclusion de tests sur des cartes supportant le calcul en double précision ; ajout de l algorithme du Gradient Biconjugué Stabilisé (BiCG-Stab).

Performances des différents algorithmes Données mesurées Temps temps d exécution total de l algorithme, y compris les transferts Précision b Ax (max. en valeur absolue du vecteur d erreur) Données de test Système construit par le programme reproductible Tailles variant entre n = 100 et n = 3 000 000 Matrices réelles provenant de la base de matrices creuses de l Université de Floride (http://www.cise.ufl.edu/ research/sparse/matrices/index.html)

Tests en simple précision Temps 10 5 10 4 Gauss Seidel CPU Jacobi GPU BiCG CPU BiCG GPU BiCG Stab CPU BiCG Stab GPU Temps de convergence (ms) 10 3 10 2 10 1 10 0 10 1 10 2 10 3 10 4 10 5 10 6 Taille du problème

Tests en simple précision Précision 10 5 Gauss Seidel CPU Jacobi GPU BiCG CPU BiCG GPU BiCG Stab CPU BiCG Stab GPU Erreur 10 6 10 2 10 3 10 4 10 5 10 6 Taille du problème

Tests en simple précision Matrices réelles 1E+03 1E+02 1E+01 1E+00 1E-01 Erreur 1E-02 1E-03 CPU GS GPU Jacobi CPU BiCG GPU BiCG CPU BiCG-Stab GPU BiCG-Stab 1E-04 1E-05 1E-06 1E-07 dw4096.bin ex1.bin mcca.bin minsurfo.bin obstclae.bin wathen100.bin

Tests en simple précision Conclusion Conclusion sur cet exemple GPU largement plus rapide que CPU...mais moins précis BiCG converge mieux que Jacobi/Gauss-Seidel, mais avec une précision moins bonne BiCG-Stab converge bien, mais avec une précision encore moins bonne le plus intéressant : BiCG sur GPU

Tests en double précision Temps 10 5 10 4 Gauss Seidel CPU Jacobi GPU BiCG CPU BiCG GPU BiCG Stab CPU BiCG Stab GPU Temps de convergence (ms) 10 3 10 2 10 1 10 0 10 1 10 2 10 3 10 4 10 5 10 6 Taille du problème

Tests en double précision Précision 10 6 10 7 10 8 Gauss Seidel CPU Jacobi GPU BiCG CPU BiCG GPU BiCG Stab CPU BiCG Stab GPU 10 9 Erreur 10 10 10 11 10 12 10 13 10 14 10 15 10 2 10 3 10 4 10 5 10 6 Taille du problème

Tests en double précision Matrices réelles 1E+06 1E+03 1E+00 Erreur 1E-03 1E-06 CPU GS GPU Jacobi CPU BiCG GPU BiCG CPU BiCG-Stab GPU BiCG-Stab 1E-09 1E-12 1E-15 dw4096.bin ex1.bin mcca.bin minsurfo.bin obstclae.bin wathen100.bin

Tests en double précision Conclusion Conclusion sur cet exemple GPU largement plus rapide que CPU GPU très largement moins précis que CPU, et précision beaucoup plus variable Pas de changement notable sur la convergence Dans le pire des cas, résultats équivalents à ceux obtenus en float BiCG sur GPU reste un bon compromis

1 Introduction 2 Contraintes et algorithmes Structure de données Méthodes itératives Améliorations possibles 3 Performances Tests en simple précision Tests en double précision 4 Conclusion

Conclusion Solveurs sur GPU Exploiter la structure des matrices creuses est primordial Rapides, mais imprécis Pas adaptés à tous les problèmes Calculer une solution initiale pour un solveur plus précis sur CPU? Idées à tester Utiliser un préconditionneur pour améliorer la précision et la convergence Utiliser des cartes plus récentes qui supportent le type double

Conclusion Code source des solveurs Sera bientôt publié (licence GPL) Intégration à CNC si on a le temps et le courage

Conclusion Des questions?

Conclusion Des questions? Merci pour votre attention!

Textures Textures Mémoire de texture Cache local (quelques ko par multiprocesseur) Une lecture au plus 1 cache miss, sinon lecture depuis le cache Optimisé pour des accès à des adresses proches au sein d un warp Lecture seule Pas de vérification de cohérence avec la mémoire globale au sein d un appel à un kernel Concrètement : permet de limiter le nombre de transactions DRAM lors d accès mémoire non-coalesced