La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Portage d'une application sur GPU CreditCruncher.

Présentations similaires


Présentation au sujet: "Portage d'une application sur GPU CreditCruncher."— Transcription de la présentation:

1 Portage d'une application sur GPU CreditCruncher

2 Pourquoi les GPU ? Conçus initialement pour l'affichage 3D sur ordinateur De nombreux avantages Capacités de calcul graphique Intérêt environnemental Rendement énergétique (Flops/Watt) et compacité Prix (Flops/€) et disponibilité Architecture parallèle « multi-core »

3 Pourquoi les GPU ? « Le GPU est un peu au CPU ce qu'un supertanker est au hors-bord. » Jen-Hsun Huang, PDG et co-fondateur de nVidia

4 Mon application sur GPU ? → CUDA Développé par nVidia Extension du langage C Disponible en téléchargement sur http://www.nvidia.com/object/cuda_get.html http://www.nvidia.com/object/cuda_get.html Fonctions « kernel » exécutées sur le GPU Notions de programmation parallèle

5 Credit Cruncher... en quelques mots Calcul de value at risk (VAR) d'un portefeuille financier Fichiers XML à l'entrée Méthode de Monte Carlo Logiciel de statistique R pour le tracé des graphiques

6 Credit Cruncher Exemple de rapport

7 Credit cruncher sur GPU Première étape Appel d'une fonction exécutée sur le GPU à partir de Credit Cruncher

8 Portage sur GPU Première étape 1.Compilation de Credit Cruncher sur Eclipse 2.Compilation d'une fonction exécutée sur le GPU sous forme de bibliothèque (.so) 3.Appel d'une fonction de cette bibliothèque à partir d'une exécution de Ccruncher

9 Ccruncher et Monte Carlo Génération de nombres aléatoires - Mersenne Twister Transformation en nombres Gaussiens Multiplication par la matrice de Cholesky → Nombres aléatoires corrélés Calcul des pertes Tracé du(des) graphique(s) 1 2

10 Les étapes du Monte Carlo sur GPU 1. Mersenne Twister + Box Muller 20.000.000 de nombres générés en 0,013 sec 2. Code de multiplication difficilement parallélisable ● Boucles dont l'incrément dépend d'une valeur arbitraire calculée à chaque tour de boucle ● Valeur i dépend de i-1 ➔ Force brute du GPU

11 Porte-feuille utilisé Nombre d'emprunts croissant ➔ Idéalement 100.000 Ratings de AAA → D : 8 au total Idéalement 16 ? Nombre de secteurs = 100 (25 secteurs sur 75 pays) ● Matrice de corrélation entre secteurs ● Symétrique ● 1 sur la diagonale ● Valeurs aléatoires entre 0,5 et 0,7 ● Définie positive ?

12 Porte-feuille utilisé Emprunts 1 % = 1.000.000 10 % = 100.000 50 % = 10.000 39 % = 1.000 100.000 simulations ➔ Idéalement 1.000.000

13 Résultats

14

15 Problèmes rencontrés Programmation avec CUDA non triviale Gestion de mémoire Différents types de mémoire (mémoire partagée, mémoire globale, mémoire de texture,...) Laisser les variables sur la mémoire GPU pour éviter les transferts Multiplication matricielle Utilisation de la force brute du GPU actuellement CUBLAS VS. Multiplication optimisée « à la main » Passage de paramètres double → float

16 Perspectives Exécution avec un porte-feuille type « DEXIA » Contacts avec le créateur de Credit Cruncher Déploiement sur son site Rédaction d'un papier Bonnes bases pour le portage d'une autre application Autre langage ?


Télécharger ppt "Portage d'une application sur GPU CreditCruncher."

Présentations similaires


Annonces Google