22
PFE sur la Monte-Carlo VaR Pierre Aït-Tahar – Paraita Wohler 7 mars 2013

Calcul de VaR par Monte-Carlo sur GPU

Embed Size (px)

DESCRIPTION

Rapport de projet encadré à l'INRIA Sophia Antipolis sur le sujet du calcul de Value-at-risk financier

Citation preview

Page 1: Calcul de VaR par Monte-Carlo sur GPU

PFE sur la Monte-Carlo VaR

Pierre Aït-Tahar – Paraita Wohler

7 mars 2013

Page 2: Calcul de VaR par Monte-Carlo sur GPU

VaR Monte-Carlo sur GPU

Table des figures

1.1 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2 Histogramme de 1966080 tirages gaussiens . . . . . . . . . . . . . . . . . . . . . . . . . 111.3 Temps cumulé suivant l’optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4 Répartition du temps avec le prototype optimisé . . . . . . . . . . . . . . . . . . . . . 131.5 Répartition du temps avec la RNG sur GPU . . . . . . . . . . . . . . . . . . . . . . . 141.6 Comparatif des 2 versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.1 résultat des benchmarks sur NEF - partie 1 . . . . . . . . . . . . . . . . . . . . . . . . 192.2 résultat des benchmarks sur NEF - partie 2 . . . . . . . . . . . . . . . . . . . . . . . . 202.3 résultat des benchmarks sur NEF - partie 3 . . . . . . . . . . . . . . . . . . . . . . . . 21

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

1

Page 3: Calcul de VaR par Monte-Carlo sur GPU

VaR Monte-Carlo sur GPU

Introduction

0.1 Description de la VaR

La VaR (de l’anglais value at risk, ou « valeur sous le risque ») est une notion utilisée généralementpour mesurer le risque de marché d’un portefeuille d’instruments financiers. Elle correspond au mon-tant des pertes qui ne devrait pas être dépassé avec une probabilité fixée sur un horizon temporel donné.

Elle a été importée à la fin des années 1980 sur les marchés financiers aux États-Unis par la banqueBankers Trust et popularisée par la banque JP Morgan en 1993 et son service (gratuit et public) Risk-metrics puis adoptée sous une forme embryonnaire par le Comité de Bâle (Bâle II) pour les banqueset Solvabilité II pour les assurances.

De nos jours, son utilisation est fortement demandé et deviendra obligatoire avec les accords deBâle III. La VaR d’un portefeuille dépend essentiellement de trois paramètres :

– la distribution des résultats des portefeuilles. Souvent cette distribution est supposée normale,mais beaucoup d’acteurs financiers utilisent des distributions historiques. La difficulté résidedans la taille de l’échantillon historique : s’il est trop petit, les probabilités de pertes élevées sontpeu précises, et s’il est trop grand, la cohérence temporelle des résultats est perdue (on comparedes résultats non comparables)

– le niveau de confiance choisi (95 ou 99 % en général)– l’horizon temporel choisiD’une manière générale, la VaR donne une estimation des pertes qui ne devrait pas être dépassée

sauf évènement extrême sur un portefeuille pouvant être composé de différentes classes d’actifs.

0.2 Description de la méthode de Monte CarloL’appellation "méthode de Monte-Carlo" désigne toute méthode visant à calculer une valeur nu-

mérique en utilisant des procédés aléatoires, c’est-à-dire des techniques probabilistes. Le nom de cetteméthode, vient des jeux de hasard pratiqués à Monte-Carlo. Elle a été inventée en 1947 par NicholasMetropolis, et publié pour la première fois en 1949 dans un article co-écrit avec Stanislaw Ulam.

La méthode de simulation de Monte-Carlo permet d’introduire une approche statistique du risquedans une décision financière. Dans notre cas le calcul de VaR. La VaR-Monte-Carlo permet de simulerles valeurs historiques de nos actifs. Cependant ces simulations sont couteuses en temps de calcul.

0.3 But du projetPour le calcul d’une VaR Monte-Carlo, une majeur partie du temps est consacrée à la généra-

tion des variables aléatoires. Les méthodes de Monte-Carlo demandent beaucoup de simulations parexemple pour un portefeuille de 100 actifs sans corrélation, sur une durée de 3 mois et 10 millions desimulations nous devrons générer 100 ∗ 90 ∗ 106 = 9 ∗ 109 variables aléatoires. Ce qui est considérable

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

2

Page 4: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

tout comme le temps d’exécution.

Pour tenter de diminuer le temps d’exécution nous allons utiliser les cartes graphiques (GPU 1),leur coût d’achat et leur consommation sont inférieurs aux CPU et leur puissance de calcul ( en FLOP) est très nettement superieure.

Pour programmer sur GPU nous avons besoin d’écrire dans un premier temps un code hôte dansnotre cas en C++, qui lancera a son tour le programme sur le GPU en OpenCL.

L’utilisation de GPU nécessite un temps de lancement, entre la copie du code et le temps derapatrier les résultats. Pour compenser ces pertes nous allons toujours calculer un grand nombre desimulations ( au moins dans l’ordre du million ).

1. Graphical Processing Unit

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

3

Page 5: Calcul de VaR par Monte-Carlo sur GPU

VaR Monte-Carlo sur GPU

Partie 1Var Monte-Carlo

1.1 Simulation d’un actif sur une journéeNous sommes dans le modèle de Black & Sholes et nous allons utiliser un mouvement brownien

géométrique : {dSt = rStdt+ σStdWT

S0 > 0

La discrétisation est donnée par :

Sti+1 = Stie(r−σ

22 )∗(ti+1−ti)+σ∗dWt

On nous a demandé d’utiliser le mouvement brownien géométrique car il permet d’avoir des résul-tats plus précis.

1.2 Précison de la distribution liée au Simulation de Monte-CarloNous allons simuler pour chaque actif une variation par jour jusqu’à l’horizon avec un Brownien

qui suit une loi N (0; δt) avec δt qui correspond à un jour. La somme de ces estimations nous donneune estimation de la valeur de portefeuille : P a Cependant nous devons savoir combien de variablealéatoire nous devons simuler.

Nous savons grâce au théorème de la loi des grands nombres ainsi que le théorème central limite,que :

P̂ an =√nPan − µσ

L−→n−→∞

N (0; 1)

AvecPan = E[P a]

On obtient l’intervalle de confiance de µ, au niveau de confiance α :

µ ∈]P an −cασ√n

;P an + cασ√n

[

cα représente le quantile de la loi Normale :

cα = Φ−1(1− α

2 )

où Φ est la fonction de répartition de la loi Normale.

Dans la majeur partie des cas, nous voulons un intervalle de confiance de niveau de confianceα = 0, 95 ou α = 0, 99, donc cα = 1, 92 ou cα = 1, 96.

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

4

Page 6: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

La variance étant inconnue, on calcule un estimateur sans biais de celle-ci :

S2n = 1

n− 1

n∑i=1

((P an )i − Pan)2 = 1

n− 1

n∑i=1

(P an )2i −

n

n− 1(P an)2

De plus nous voulons une précision de 0.01% il faut donc que le rapport cασ√n< 0.01. Le problème

est que nous calculons la variance pour un nombre de variables fixé par avance, il est fréquent que lenombre de variables aléatoires soit insuffisant pour la précision voulue. Nous devons donc re-simulerd’autres variables tant que l’inégalité n’est pas réalisée.Dans la pratique, avec le nombre très important de variables aléatoires que nous utilisons liés àutilisation de GPU, ( < 1 000 000 par actifs ) nous avons toujours un intervalle de confiance inferieurà 0.01%.

1.3 Architecture du codeSur la figure 1.1 on peut voir l’architecture orientée objet de notre programme.

Même si le framework OpenCL est écrit en C, le projet nécessitait d’utiliser le langage C++. Leprincipal avantage est la réutilisabilité de nos classes, en particulier le CLManager qui pourra êtreutilisé dans d’autres projets ou domaines. Aussi la compréhension de notre code est plus aisée cartoute la mécanique OpenCL est cachée à l’utilisateur de cette classe.

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

5

Page 7: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

Figure 1.1 – Diagramme de classes

En fait, OpenCL met à disposition une surcouche C++ vers le framework C mais il est encore àl’état d’ébauche et n’est pas vraiment utilisable (accès limité aux infos des devices par exemple).

1.3.1 Mécanisme OpenCL

OpenCL est à la fois un langage de programmation, qui sera exécuté sur un périphérique compatibleOpenCL, mais aussi un framework, c’est à dire un ensemble de fonctions utilisées pour envoyer descommandes OpenCL.

L’idée est de pouvoir faire exécuter du calcul de manière parallèle en profitant du nombre importantde coeurs disponibles sur un GPU. OpenCL pousse l’abstraction plus loin en permettant de ne plusdifférencier le périphérique en lui même mais de ne voir que les coeurs (ou Comput Unit en termeOpenCL). Ainsi il est possible de parler à plusieurs GPU et même des CPU, OpenCL se démocratisantmême aux processeurs ARM.

Lorsqu’on veut exécuter du code OpenCL, il est nécessaire dans un premier temps d’interroger lamachine pour connaître les différents périphériques compatibles. Il faut donc récupérer les platforms 1,

1. pilote OpenCL

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

6

Page 8: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

en général le pilote d’affichage du GPU, mais si on possède plusieurs GPU de marques différentes,ont aurait alors plusieurs plateformes. Pour chacune des plateformes, il faut récupérer les devices 2 quisont composés de plusieurs Comput Units, eux mêmes composés de plusieurs processeurs.

Une fois que l’on sait à qui on va donner du travail, il faut instancier une file de commande ainsiqu’un contexte, qui feront le lien entre la machine hôte et le GPU.

L’exécution se fait en donnant le nombre de work-items 3, pour simplifier un work-item = un thread.On peut grouper un ensemble de work-items (un work-group), ainsi tout les work-items d’un mêmework-group peuvent se partager des données, données qui seront stockées localement au ComputUnit, donc plus rapides. Néanmoins un Comput Unit possède une limite de taille maximale, taille quipeut être récupérée via une requête au device adéquat. Maximiser la taille des work-groups permetd’occuper au mieux le GPU, et l’accès aux données se fait plus rapidement. Aussi il faut garder entête que tous les work-items ne travaillent pas magiquement tous en même temps mais par paquetsde 32, ce paramètre est apelé la warp chez Nvidia et wavefront chez AMD.

Les données circulant de l’hôte au GPU ont besoin d’être allouées explicitement, car tous les para-mètres sont passés par pointeurs. De même pour rappatrier un résultat, la mémoire allouée sur l’hôteaccueillera le résultat du calcul effectué sur le GPU.

Une fois le calcul OpenCL effectué et le résultat récupéré, il faut relacher la main sur les ressourcesOpenCL, dans l’ordre suivant :

1. vidage de la file de commande2. fermeture de la file de commande3. désallocation des kernels utilisés4. désallocation des kernels compilés (ou cl_program)5. désallocation des buffers des paramètres des kernels6. release de la main sur la file de commande7. release de la main sur le contexte OpenCL

Autant de mécanismes qui peuvent facilement amener à des erreurs, bugs, et autres problèmes decompréhension du code. En pratique on s’est rendu compte que le nombre de lignes pour le dialoguede l’hôte au GPU était presque 4 fois supérieur au nombre de ligne d’un kernel. D’ou cette volontéd’abstraire toute cette mécanique à l’aide de classes.

2. les périphériques pouvant effectuer du calcul OpenCL3. instanciation du kernel

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

7

Page 9: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

1.3.2 Langage OpenCL

Le langage OpenCL est dérivé du langage C, et est exécuté sur les devices compatibles. Il fautsavoir qu’une fois un kernel terminé, toute la mémoire utilisée est flushée, donc il n’est plus possibled’accéder aux mêmes données d’une exécution à l’autre.

Voici un exemple de code OpenCL :

__kernel void addition(__global int *v1,__global int *v2,__global int *res)

{int id = get_global_id(0);res[id] = v1[id] + v2[id];

}

Ce code fait l’addition de deux vecteurs, le résultat est stocké dans un troisième vecteur.

Les librairies comme la stdlib.h ou time.h par exemple n’existent pas dans OpenCL, d’où la nécessitéde devoir implémenter soi même beaucoup de code, dans notre cas la génération de valeurs aléatoires.

1.3.3 CLManager

Le CLManager, lors de son instanciation, va récupérer auprès du framework toutes les platformset leurs devices respectifs.

Une fois instancié, il faut spécifier le device nous allons utiliser avec l’appel à CLManager::init()(à ce moment on peut même spécifier si on souhaite chronométrer le temps que le calcul mettra surle GPU). En fait il est même possible d’utiliser plusieurs devices, mais avec la contrainte de tempsimposée, nous n’avons pas voulu plus approfondir dans ce sens.

Ensuite il faut donner au CLManager le chemin vers le(s) kernel(s) 4 avec l’appel àCLManager::loadKernels(). Cette manière de charger le code métier OpenCL permet de travaillersur le code OpenCL sans avoir à recompiler l’ensemble de l’application.

Une fois chargé, on compile ce code avec l’appel CLManager::compileKernel() qui prend en para-mètre le nom du kernel que l’on veut exécuter (si le fichier comprend plusieurs kernels par exemple).

Il faut donner les paramètres d’appel du kernel, dans l’ordre où ils apparaissent dans la signaturedu kernel, avec CLManager::setKernelArg().

Enfin on lance l’exécution du kernel avec l’appel à CLManager::executeKernel() en lui spécifiantle nombre de work-items ainsi que le nom du kernel à exécuter.

Le résultat de l’exécution se récupère avec l’appel à CLManager::getResultat(), qui va copier lerésultat depuis la mémoire du GPU vers la mémoire RAM de l’ordinateur, dans la variable que l’onaura instanciée auparavant.

4. c’est le nom qu’on donne à une fonction qui tournera sur GPU

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

8

Page 10: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

Voici un exemple d’utilisation :

CLManager clm;clm.init(0,0);clm.loadKernels("meskernels.cl");clm.compileKernel("addition");int *v1 = (int *) calloc(10, sizeof(int));int *v2 = (int *) calloc(10, sizeof(int));int *resultat = (int *) calloc(10, sizeof(int));clm.setKernelArg("addition", 0, 10, sizeof(int), v1, false);clm.setKernelArg("addition", 1, 10, sizeof(int), v2, false);clm.setKernelArg("addition", 2, 10, sizeof(int), resultat, true);clm.executeKernel(10, "addition");clm.getResultat();

Ce code va donc faire l’addition de 2 vecteurs, comme la taille du vecteur est connue, je spécifie donclors de l’appel à clm.executeKernel() que je ne vais utiliser que 10 work-items. Aussi la méthodesetKernelArg() prend en paramètre :

– le nom du kernel ("addition")– le numéro du paramètre (qui commence à 0)– le nombre d’élements de mon paramètre (il y a 10 entiers dans mon vecteur)– la taille d’un élement (la taille d’un entier en mémoire)– le pointeur vers la donnée qu’on va envoyer au kernel– false si c’est un paramètre d’entrée, true si c’est un paramètre de sortie

Le résultat sera lisible dans la variable resultat.

Le CLManager nous a permis de réduire considérablement le nombre de lignes dans le code applicatif,et ainsi de réduire les erreurs de code.

Le constructeur de CLManager va demander les différentes ressources OpenCL disponibles sur lamachine, le destructeur quant à lui va relacher la main sur le périphérique.

1.3.4 Portefeuille

La classe Portefeuille contient les actifs d’un portefeuille, d’ailleurs on l’instancie avec le chemind’accès vers un fichier au format csv 5, avec la structure suivante :

<nom>;<rendement>;<volatilité>;<taux d’intérêts>

Ce qui permet de charger dynamiquement un portefeuille sans avoir à coder le portefeuille en durdans le code. De plus la classe Portefeuille permet de récupérer aisément les caractérisques de celui ci,on peut donc récupérer :

– l’ensemble des rendements sous forme d’array– l’ensemble des volatilités des actifs– l’ensemble des taux d’intérêts– le rendement total du portefeuille– le nombre d’actifs constituant ce portefeuille

5. Comma Separated Value : format où on sépare des données par un espace, une tabulation, un virgue ou unpoint-virgule

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

9

Page 11: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

1.3.5 Actif

La classe Actif permet de représenter un actif au sens financier avec :– le nom du sous jacent sur quoi porte l’actif– le rendement du sous jacent– la volatilité– le taux d’intérêts

Dans notre cas d’utilisation, nous nous limitons aux actions simples.

1.4 Simulation des Variables AléatoiresComme nous l’avions dit précédemment, c’est la génération des variables aléatoires qui prend le

plus de temps. Dans un premier temps nous avions utilisé l’implémentation de Mersenne Twisterdonnée par la librairie Boost 6, et qui nous a permis de nous concentrer sur le tirage des trajectoiressur GPU.

Nous nous sommes rendus compte que l’algorithme de Mersenne Twister, même s’il était très rapideet bénéficiait d’une très grand période (219937−1), prenait beaucoup de place en mémoire, sachant quesi chaque work-item devait posséder son propre générateur, il nous faudrait sur le GPU une mémoirede l’ordre de #(work − items) ∗ 624 ∗ 4 octets, ce qui n’est pas envisageable.

Nous nous sommes donc tournés vers l’algorithme MWC 7, en particulier une implémentation exis-tante fonctionnant sur OpenCL, MWC64X 8. La particularité de cette implémentation est que legénérateur n’occupe que 4 octets, pour une période de 232. Si on est toujours limités en nombre dework-items, il est néanmoins possible de calculer la VaR sur un horizon très lointain, car le mêmegénérateur est utilisé jusqu’à l’horizon. Un article de l’auteur 9 de l’implémentation permet de vérifierla solidité de son générateur, et nous avons nous même vérifié que les valeurs aléatoires générées puistransformées en gaussiennes étaient cohérentes, voir la figure 1.2. On voit que le générateur est debonne qualité, dans la figure on a fait 1966080 tirages.

1.5 Analyse des performancesPour la figure 1.3 la machine utilisée possède le matériel suivant :– CPU : iCore 7 avec 4 coeurs logiques– CPU : 8 Go de RAM– GPU : Geforce 330M– GPU : 6 Comput Units– GPU : 512 Mo de RAM– GPU : taille max de work-items par workgroup : 256

Dans la première barre, nous avons repris le code du prototype montré lors de la pré-soutenance,c’est à dire sans optimisation. La génération des valeurs aléatoires est faite côté CPU, le calcul destrajectoires sur le GPU, et le tri sur le CPU.

6. http://www.boost.org/doc/libs/1_53_0/doc/html/boost_random.html7. Multiply-With-Carry de Marsaglia8. http://cas.ee.ic.ac.uk/people/dt10/research/rngs-gpu-mwc64x.html9. http://cas.ee.ic.ac.uk/people/dt10/research/publications.html

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

10

Page 12: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

Figure 1.2 – Histogramme de 1966080 tirages gaussiens

Figure 1.3 – Temps cumulé suivant l’optimisation

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

11

Page 13: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

Dans la deuxième barre, nous avons profité du fait que la mémoire dite globale dans la RAM duGPU pouvait être mise en cache, l’accès y est donc plus rapide, mais la quantité moins importante.Plus précisement cela s’est fait aisément sur la signature du kernel.Avant :

__kernel void calcul_trajectoires(__global const float *RENDEMENTS,__global const float *VOLS,__global const float *TI,__global const float *ALEA,

__global float *rendement,__global float *TIRAGES,__global const int *nb_actions,__global const int *horizon) {

Après :

__kernel void calcul_trajectoires(__global const float *RENDEMENTS,__global const float *VOLS,__global const float *TI,__global const float *ALEA,

__constant float *rendement,__global float *TIRAGES,__constant int *nb_actions,__constant int *horizon) {

Pour la troisième barre, nous avons décidé d’ajuster le nombre de tirages selon l’architecture duGPU, dans notre cas il fallait que le nombre de tirages soit multiple de :

– 32 car c’est la taille de la warp chez NVidia– 6 car c’est le nombre de Comput Unit sur le GPU– 256 car c’est le nombre maximal de work-items dans un workgroup

Pour cela le CLManager demande la taille max de work-items dans un workgroup au pilote OpenCL,le reste des calculs se fera avec ce paramètre.

Enfin pour la dernière barre nous avons réunit les 2 optimisations précédentes. L’optimisation laplus remarquable est bien évidemment l’ajustement du nombre de tirages.

Pour le reste des tests, nous avons utilisé le réseau NEF mis en place par l’INRIA et qui met àdisposition plusieurs machines dont certaines équipées de GPU performants. La machine que nousavons donc utilisé est la suivante :

– CPU : Intel Xeon 24 coeurs– CPU : 32 Go de RAM– GPU : NVidia Tesla C2050– GPU : 2 x 3 Go de RAM– GPU : 2 x 12 Comput Units– GPU : taille max de work-items par workgroup : 1024

Nous nous sommes néanmoins limité à l’utilisation d’un seul des GPU sur la Tesla C2050, mais OpenCLpermet l’utilisation de plusieurs GPU en même temps.

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

12

Page 14: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

Figure 1.4 – Répartition du temps avec le prototype optimisé

1.5.1 Répartition du temps dans l’application

Sur la figure 1.4 on voit la répartition du temps dans l’application lorsqu’on a l’architecture suivante :– RNG 10 sur CPU– calcul des trajectoires sur GPU– tri sur CPU

Qui est en fait l’optimisation de notre prototype.

Sur la figure 1.5 on voit la répartition du temps lorsqu’on bascule la génération des valeurs aléatoiressur le GPU.

Ce qu’on qualifie de temps autre n’est que le reste du temps où le programme fait l’instanciationdes objets, des variables, l’écriture sur STDOUT, etc...On voit évidemment après avoir passé la RNG sur le GPU, ce qui nous ralentit encore est le tri quilui est resté sur CPU. En passant le tri sur GPU (dans l’état de l’art c’est un problème déjà résoluet des solutions bien optimisées existent déjà). Malheureusement nous n’avons pas eu le temps d’alleraussi loin dans l’implémentation.

1.5.2 Passage à l’échelle

Sur un nombre de plus en plus important de tirages, comment se comporte notre application ? Ilfaut garder à l’esprit que la taille limitée de la RAM côté GPU impacte grandement le nombre detirages, sur la figure 1.6 on voit néanmoins le temps pris par, en bleu le prototype optimisé (RNG surCPU), et en rouge la version finale que nous avons codé (RNG sur GPU).

10. Random Number Generation

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

13

Page 15: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

Figure 1.5 – Répartition du temps avec la RNG sur GPU

Figure 1.6 – Comparatif des 2 versions

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

14

Page 16: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

La dernière version que nous avons codé passe non seulement sur un plus grand nombre de tirages,mais nous pouvons aussi calculer la VaR sur un horizon plus lointain (de la taille de la période denotre générateur). La place utilisée en mémoire n’est pas proportionnelle à l’horizon.

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

15

Page 17: Calcul de VaR par Monte-Carlo sur GPU

VaR Monte-Carlo sur GPU

Partie 2Conclusion

2.1 Travail effectuéAu cours de ce projet nous avons appris sur la difficulté de la programmation gpu,GPU comment

utiliser les différentes mémoires, la répartition des workgroup, l’interaction entre le code GPU et lastructure de la carte.

Nous avons implémenté un CLManager qui permet d’abstraire tous les appels OpenCL, et rendreainsi le code plus lisible et plus facile à débugger.

Nous faisons la génération des gaussiennes ainsi que les calculs des trajectoires, seul le tri se faitcoté CPU.

2.2 Évolutions possibles

2.2.1 Gestion plus propre des erreurs

Par manque de temps, pour debugger nous utilisons un mode de compilation dans lequel nousenvoyons le numéro de l’erreur avec une trace qui correspond au nom de la méthode qui l’a lancé.Pour l’utilisateur final, ça ne présente aucun problème car la gestion des erreurs actuelle est interne àla classe.Autrement nous aurions implémenté un système d’Exception, plus propre architecturalement parlant.

2.2.2 La classe Actif

Dans un cadre plus général il serait préférable d’avoir la classe Actif qui serait une interface, queplusieurs types d’actifs devraient implémenter, par exemple une Action serait un actif particulier. Lesimplémentations devraient pouvoir retourner leur rendement respectif.

2.2.3 Spécialisation du CLManager

Une classe CLManagerFi qui hériterait de CLManager permettrait de spécialiser le comportementde celui ci par exemple en prenant directement le portefeuille en paramètre, et selon la nature del’actif, chargerait le kernel adéquat.

2.2.4 Optimisation plus poussée du découpage du travail

Dans l’état actuel, CLManager ne gère qu’un seul device à la fois, il serait intéressant de pouvoirspécifier un ensemble de devices, et ainsi encore diminuer le temps de calcul. Par exemple sur NEF 1,qui est la plateforme qui nous a été mise à disposition, la machine que nous utilisions bénéficiait de 2devices, théoriquement nous aurions pu calculer 2 fois plus vite.

1. http://www-sop.inria.fr/dream/Cluster/OverView

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

16

Page 18: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

2.2.5 Utilisation des variables antithétiques

Suite au cours de M. Tanré nous avons vu l’intéret des variables antithétiques.Dans notre cas nous savons que :

WT ∼ N (0, T )

σWT ∼ N (0, σ2T )

−σWT ∼ N (0, σ2T )

On peut en conclure qu’en utilisant cette propriété pour un même nombre de simulation nouspouvons générer 2 fois moins de variables aléatoires, ce qui représente un grand gain de temps. Uneautre utilisation aurait été si notre générateur de variables aléatoires avait une faible cyclicité, maisce n’est pas cas.

2.2.6 Utilisation d’actifs correlés

Dans notre cahier des charges nous avons comme hypothèse que tous nos actifs ne sont pas corrélés.Dans le cas contraire nous devons faire un changement de repère pour avoir une base où les actifs nele sont pas.

La matrice de corrélation est par définition symétrique. Nous pouvons l’exprimer dans une base devecteurs propres. La librairie Boost possède des fonctions permettant de faire cette transformation.

2.3 Gestion de projet

2.3.1 Planning de travail

Pour faire ce projet nous avons eu 2 mois où nous avons réparti les tâches de la manière suivante :

Semaine 1 Analyse de la problématiqueSemaine 2 Analyse des problèmes liés à la programmation GPUSemaine 3 Début de la programmationSemaine 4 Fin d’implémentation Mersenne TwisterSemaine 5 Simulation d’un actif sur une horizonSemaine 6 Calcul de la Var Monte-Carlo ( un actif )Semaine 7 Calcul de la Var Monte-Carlo ( plusieurs actifs )Semaine 8 Améliorations ( précisions de calculs, temps de calcul )

Nous avons réussi à respecter le planning prévisionnel, néanmoins nous regrettons de ne pas avoirpu bénéficier de plus de temps pour implémenter le tri sur GPU.

2.4 Références– Options, futures et autres actifs dérivés - John Hull– Monte Carlo Methods in Financial Engineering - Paul Glasserman– http ://en.wikipedia.org/wiki/Mersenne_twister– http ://fr.wikipedia.org/wiki/Méthode_de_Box-Muller– http ://developer.amd.com/resources/heterogeneous-computing/opencl-zone/– https ://developer.nvidia.com/opencl– http ://www.khronos.org/opencl/– http ://www.giref.ulaval.ca/ãfortin/mat17442/documents/splines.pdf– http ://en.wikipedia.org/wiki/CUDA#Supported_GPUs

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

17

Page 19: Calcul de VaR par Monte-Carlo sur GPU

VaR Monte-Carlo sur GPU

Annexe

Voici les résultats des benchmarks réalisés sur NEF :

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

18

Page 20: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

Ca

lcu

l1C

alc

ul2

RN

GC

PU

seu

il c

on

fia

nce

0,9

9R

NG

GP

Use

uil

co

nfi

an

ce0

,99

Tir

ag

es

GP

Uh

ori

zon

1T

ira

ge

sG

PU

ho

rizo

n1

Tri

CP

UT

riC

PU

nb

tir

ag

es

ren

de

me

nt

spo

tV

aR

tem

ps

RN

G (

ms)

tem

ps

tira

ge

s (m

s)te

mp

s tr

i (m

s)te

mp

s to

tal

(ms)

tem

ps

au

tre

(m

s)te

mp

s ti

rag

es+

RN

Gn

b t

ira

ge

sre

nd

em

en

t sp

ot

Va

Rte

mp

s R

NG

+ti

rag

es

(ms)

tem

ps

tri

(ms)

tem

ps

tota

l (m

s)te

mp

s a

utr

e (

ms)

39

3 2

16

68

7,0

9-6

57

,83

54

0,9

20

,98

82

,34

4 3

71

,03

3 7

46

,80

54

1,9

03

93

21

66

87

,09

-79

0,9

44

7,0

28

0,9

63

61

4,6

63

48

6,6

9

39

3 2

16

68

7,0

9-6

57

,83

53

7,8

70

,98

82

,00

4 2

94

,06

3 6

73

,21

53

8,8

43

93

21

66

87

,09

-79

0,9

44

7,0

18

0,9

53

70

4,2

33

57

6,2

7

39

3 2

16

68

7,0

9-6

57

,83

53

6,8

60

,98

81

,99

3 8

50

,97

3 2

31

,14

53

7,8

43

93

21

66

87

,09

-79

0,9

44

7,0

28

0,9

43

45

9,9

23

33

1,9

7

39

3 2

16

68

7,0

9-6

57

,83

54

3,7

30

,98

82

,01

3 9

74

,90

3 3

48

,19

54

4,7

13

93

21

66

87

,09

-79

0,9

44

7,0

18

0,9

43

28

5,1

13

15

7,1

6

39

3 2

16

68

7,0

9-6

57

,83

53

7,4

30

,98

82

,00

3 8

43

,52

3 2

23

,11

53

8,4

13

93

21

66

87

,09

-79

0,9

44

7,0

18

0,9

53

78

8,7

33

66

0,7

7

39

3 2

16

68

7,0

9-6

57

,83

53

9,5

50

,98

81

,99

3 8

58

,07

3 2

35

,54

54

0,5

33

93

21

66

87

,09

-79

0,9

44

7,0

28

0,9

53

80

3,7

83

67

5,8

2

39

3 2

16

68

7,0

9-6

57

,83

53

9,6

90

,97

81

,99

3 9

01

,74

3 2

79

,09

54

0,6

63

93

21

66

87

,09

-79

0,9

44

7,0

18

0,9

73

44

1,8

93

31

3,9

1

39

3 2

16

68

7,0

9-6

57

,83

53

8,0

40

,98

81

,98

4 0

65

,55

3 4

44

,55

53

9,0

23

93

21

66

87

,09

-79

0,9

44

7,0

18

0,9

43

67

9,2

53

55

1,2

9

39

3 2

16

68

7,0

9-6

57

,83

53

7,8

50

,98

82

,00

4 0

34

,53

3 4

13

,71

53

8,8

33

93

21

66

87

,09

-79

0,9

44

7,0

08

0,9

63

79

7,8

53

66

9,8

9

39

3 2

16

68

7,0

9-6

57

,83

53

9,6

30

,97

82

,00

4 0

48

,23

3 4

25

,62

54

0,6

13

93

21

66

87

,09

-79

0,9

44

6,9

68

1,0

13

72

5,6

33

59

7,6

6

mo

ye

nn

e5

39

,16

0,9

88

2,0

34

02

4,2

63

40

2,1

05

40

,13

mo

ye

nn

e4

7,0

18

0,9

63

63

0,1

13

50

2,1

4

nb

tir

ag

es

ren

de

me

nt

spo

tV

aR

tem

ps

RN

G (

ms)

tem

ps

tira

ge

s (m

s)te

mp

s tr

i (m

s)te

mp

s to

tal

(ms)

tem

ps

au

tre

(m

s)te

mp

s ti

rag

es+

RN

Gn

b t

ira

ge

sre

nd

em

en

t sp

ot

Va

Rte

mp

s R

NG

+ti

rag

es

(ms)

tem

ps

tri

(ms)

tem

ps

tota

l (m

s)te

mp

s a

utr

e (

ms)

78

6 4

32

68

7,0

9-7

53

,54

1 0

76

,64

1,9

11

72

,39

4 4

92

,47

3 2

41

,53

1 0

78

,55

78

6 4

32

68

7,0

9-7

90

,94

97

,01

17

1,0

13

81

0,8

83

54

2,8

6

78

6 4

32

68

7,0

9-7

53

,54

1 0

76

,40

1,9

11

72

,58

4 6

82

,35

3 4

31

,46

1 0

78

,31

78

6 4

32

68

7,0

9-7

90

,94

97

,04

17

1,0

53

76

7,2

33

49

9,1

4

78

6 4

32

68

7,0

9-7

53

,54

1 0

76

,23

1,9

21

72

,56

4 6

77

,95

3 4

27

,25

1 0

78

,15

78

6 4

32

68

7,0

9-7

90

,94

97

,02

17

1,6

73

90

5,5

53

63

6,8

6

78

6 4

32

68

7,0

9-7

53

,54

1 0

77

,19

1,9

11

72

,56

4 8

15

,54

3 5

63

,88

1 0

79

,10

78

6 4

32

68

7,0

9-7

90

,94

97

,02

17

1,0

73

55

5,4

03

28

7,3

2

78

6 4

32

68

7,0

9-7

53

,54

1 0

81

,59

1,9

21

72

,34

4 5

44

,08

3 2

88

,22

1 0

83

,51

78

6 4

32

68

7,0

9-7

90

,94

97

,02

17

1,2

33

70

2,3

53

43

4,1

0

78

6 4

32

68

7,0

9-7

53

,54

1 0

76

,06

1,9

31

72

,39

4 4

17

,12

3 1

66

,74

1 0

77

,99

78

6 4

32

68

7,0

9-7

90

,94

97

,02

17

1,0

53

46

3,3

03

19

5,2

3

78

6 4

32

68

7,0

9-7

53

,54

1 0

76

,44

1,9

01

72

,30

4 8

13

,91

3 5

63

,27

1 0

78

,34

78

6 4

32

68

7,0

9-7

90

,94

97

,02

17

1,1

13

53

2,0

33

26

3,9

0

78

6 4

32

68

7,0

9-7

53

,54

1 0

71

,66

1,9

21

72

,36

4 5

42

,19

3 2

96

,25

1 0

73

,58

78

6 4

32

68

7,0

9-7

90

,94

97

,03

17

1,7

73

97

8,4

03

70

9,6

0

78

6 4

32

68

7,0

9-7

53

,54

1 0

61

,18

1,9

11

72

,33

4 4

65

,71

3 2

30

,29

1 0

63

,09

78

6 4

32

68

7,0

9-7

90

,94

97

,05

17

1,0

63

55

4,0

93

28

5,9

8

78

6 4

32

68

7,0

9-7

53

,54

1 0

77

,28

1,9

21

72

,87

4 8

50

,97

3 5

98

,90

1 0

79

,20

78

6 4

32

68

7,0

9-7

90

,94

97

,03

17

1,0

33

59

6,0

83

32

8,0

3

mo

ye

nn

e1

07

5,0

71

,91

17

2,4

74

63

0,2

33

38

0,7

81

07

6,9

8m

oy

en

ne

97

,03

17

1,2

03

68

6,5

33

41

8,3

0

nb

tir

ag

es

ren

de

me

nt

spo

tV

aR

tem

ps

RN

G (

ms)

tem

ps

tira

ge

s (m

s)te

mp

s tr

i (m

s)te

mp

s to

tal

(ms)

tem

ps

au

tre

(m

s)te

mp

s ti

rag

es+

RN

Gn

b t

ira

ge

sre

nd

em

en

t sp

ot

Va

Rte

mp

s R

NG

+ti

rag

es

(ms)

tem

ps

tri

(ms)

tem

ps

tota

l (m

s)te

mp

s a

utr

e (

ms)

1 5

72

86

46

87

,09

-78

9,4

82

03

7,1

03

,80

36

3,0

65

53

6,6

43

13

2,6

82

04

0,9

01

57

2 8

64

68

7,0

9-8

02

,37

20

2,9

43

59

,79

4 0

07

,89

3 4

45

,15

1 5

72

86

46

87

,09

-78

9,4

82

00

6,9

23

,79

36

4,0

55

88

3,8

13

50

9,0

52

01

0,7

11

57

2 8

64

68

7,0

9-8

02

,37

20

2,9

13

60

,05

3 8

75

,29

3 3

12

,33

1 5

72

86

46

87

,09

-78

9,4

81

95

7,0

43

,79

36

3,1

05

53

2,3

93

20

8,4

61

96

0,8

31

57

2 8

64

68

7,0

9-8

02

,37

20

2,9

13

59

,86

3 8

61

,20

3 2

98

,43

1 5

72

86

46

87

,09

-78

9,4

81

98

0,8

13

,78

36

3,6

15

73

7,6

03

38

9,4

01

98

4,5

91

57

2 8

64

68

7,0

9-8

02

,37

20

2,9

03

59

,78

3 8

95

,96

3 3

33

,28

1 5

72

86

46

87

,09

-78

9,4

81

88

0,0

03

,81

36

3,4

35

54

0,7

63

29

3,5

21

88

3,8

11

57

2 8

64

68

7,0

9-8

02

,37

20

2,9

23

59

,22

3 7

65

,10

3 2

02

,96

1 5

72

86

46

87

,09

-78

9,4

82

00

6,8

73

,79

36

3,4

25

54

7,4

63

17

3,3

82

01

0,6

61

57

2 8

64

68

7,0

9-8

02

,37

20

2,9

43

59

,45

4 2

76

,55

3 7

14

,16

1 5

72

86

46

87

,09

-78

9,4

82

12

9,9

23

,78

36

3,6

75

87

3,5

53

37

6,1

72

13

3,7

01

57

2 8

64

68

7,0

9-8

02

,37

20

2,9

13

59

,82

3 8

44

,67

3 2

81

,94

1 5

72

86

46

87

,09

-78

9,4

82

00

0,6

53

,79

36

3,5

25

68

5,6

73

31

7,7

12

00

4,4

41

57

2 8

64

68

7,0

9-8

02

,37

20

2,9

03

59

,84

3 8

37

,00

3 2

74

,25

1 5

72

86

46

87

,09

-78

9,4

82

10

5,7

33

,79

36

4,1

05

86

7,2

33

39

3,6

12

10

9,5

21

57

2 8

64

68

7,0

9-8

02

,37

20

2,8

73

59

,87

3 9

64

,82

3 4

02

,08

1 5

72

86

46

87

,09

-78

9,4

82

09

4,5

53

,80

36

3,3

25

68

1,5

33

21

9,8

62

09

8,3

51

57

2 8

64

68

7,0

9-8

02

,37

20

2,9

13

59

,94

3 9

69

,72

3 4

06

,87

mo

ye

nn

e2

01

9,9

63

,79

36

3,5

35

68

8,6

63

30

1,3

82

02

3,7

5m

oy

en

ne

20

2,9

13

59

,76

3 9

29

,82

3 3

67

,15

Figure 2.1 – résultat des benchmarks sur NEF - partie 1

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

19

Page 21: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

Ca

lcu

l1C

alc

ul2

RN

GC

PU

seu

il c

on

fia

nce

0,9

9R

NG

GP

Use

uil

co

nfi

an

ce0

,99

Tir

ag

es

GP

Uh

ori

zon

1T

ira

ge

sG

PU

ho

rizo

n1

Tri

CP

UT

riC

PU

nb

tir

ag

es

ren

de

me

nt

spo

tV

aR

tem

ps

RN

G (

ms)

tem

ps

tira

ge

s (m

s)te

mp

s tr

i (m

s)te

mp

s to

tal

(ms)

tem

ps

au

tre

(m

s)te

mp

s ti

rag

es+

RN

Gn

b t

ira

ge

sre

nd

em

en

t sp

ot

Va

Rte

mp

s R

NG

+ti

rag

es

(ms)

tem

ps

tri

(ms)

tem

ps

tota

l (m

s)te

mp

s a

utr

e (

ms)

3 1

45

72

86

87

,09

-81

8,0

23

95

7,1

37

,50

75

6,8

37

97

1,3

43

24

9,8

83

96

4,6

33

14

5 7

28

68

7,0

9-8

79

,44

42

3,9

77

49

,95

4 7

31

,18

3 5

57

,26

3 1

45

72

86

87

,09

-81

8,0

23

96

0,4

87

,54

75

6,7

98

31

0,8

63

58

6,0

53

96

8,0

23

14

5 7

28

68

7,0

9-8

79

,44

42

3,9

37

16

,56

4 3

87

,72

3 2

47

,24

3 1

45

72

86

87

,09

-81

8,0

24

07

2,8

07

,52

75

7,0

85

29

0,3

34

52

,92

4 0

80

,32

3 1

45

72

86

87

,09

-87

9,4

44

23

,83

74

9,9

24

81

4,9

73

64

1,2

2

3 1

45

72

86

87

,09

-81

8,0

23

83

9,8

57

,53

75

6,7

47

75

1,5

43

14

7,4

23

84

7,3

83

14

5 7

28

68

7,0

9-8

79

,44

42

3,9

17

50

,34

4 4

72

,41

3 2

98

,17

3 1

45

72

86

87

,09

-81

8,0

23

97

2,8

87

,49

75

6,7

08

40

7,0

73

67

0,0

03

98

0,3

73

14

5 7

28

68

7,0

9-8

79

,44

42

3,9

07

50

,17

4 6

68

,71

3 4

94

,65

3 1

45

72

86

87

,09

-81

8,0

23

85

3,1

87

,47

75

6,8

18

07

9,4

63

46

2,0

03

86

0,6

53

14

5 7

28

68

7,0

9-8

79

,44

42

3,8

17

50

,84

4 4

80

,11

3 3

05

,46

3 1

45

72

86

87

,09

-81

8,0

23

82

7,6

47

,50

75

6,7

97

83

4,3

23

24

2,3

93

83

5,1

43

14

5 7

28

68

7,0

9-8

79

,44

42

3,5

67

49

,83

4 6

06

,90

3 4

33

,51

3 1

45

72

86

87

,09

-81

8,0

24

01

8,7

87

,50

75

6,6

48

00

9,9

33

22

7,0

14

02

6,2

83

14

5 7

28

68

7,0

9-8

79

,44

42

3,5

87

49

,97

4 7

82

,17

3 6

08

,62

3 1

45

72

86

87

,09

-81

8,0

23

81

9,7

57

,54

75

6,9

37

78

0,1

73

19

5,9

53

82

7,2

93

14

5 7

28

68

7,0

9-8

79

,44

42

3,9

17

50

,39

4 8

36

,94

3 6

62

,64

3 1

45

72

86

87

,09

-81

8,0

23

75

6,2

97

,51

75

7,0

67

78

9,7

13

26

8,8

53

76

3,8

03

14

5 7

28

68

7,0

9-8

79

,44

42

3,8

87

50

,56

4 4

49

,23

3 2

74

,79

mo

ye

nn

e3

90

7,8

87

,51

75

6,8

47

72

2,4

73

05

0,2

53

91

5,3

9m

oy

en

ne

42

3,8

37

46

,85

4 6

23

,03

3 4

52

,35

nb

tir

ag

es

ren

de

me

nt

spo

tV

aR

tem

ps

RN

G (

ms)

tem

ps

tira

ge

s (m

s)te

mp

s tr

i (m

s)te

mp

s to

tal

(ms)

tem

ps

au

tre

(m

s)te

mp

s ti

rag

es+

RN

Gn

b t

ira

ge

sre

nd

em

en

t sp

ot

Va

Rte

mp

s R

NG

+ti

rag

es

(ms)

tem

ps

tri

(ms)

tem

ps

tota

l (m

s)te

mp

s a

utr

e (

ms)

6 2

91

45

66

87

,09

-82

4,0

57

76

8,0

11

4,9

91

57

0,2

81

2 6

12

,00

3 2

58

,72

7 7

83

,00

6 2

91

45

66

87

,09

-91

1,1

18

82

,78

1 4

77

,70

5 7

01

,70

3 3

41

,22

6 2

91

45

66

87

,09

-82

4,0

57

47

8,2

11

4,9

81

57

0,5

31

2 7

01

,00

3 6

37

,28

7 4

93

,19

6 2

91

45

66

87

,09

-91

1,1

18

82

,75

1 4

86

,75

5 5

23

,17

3 1

53

,67

6 2

91

45

66

87

,09

-82

4,0

57

84

1,4

41

4,9

91

46

7,6

31

2 5

54

,00

3 2

29

,94

7 8

56

,43

6 2

91

45

66

87

,09

-91

1,1

18

82

,77

1 4

78

,01

5 7

05

,41

3 3

44

,63

6 2

91

45

66

87

,09

-82

4,0

57

65

3,2

61

4,9

31

45

2,0

71

2 4

78

,00

3 3

57

,74

7 6

68

,19

6 2

91

45

66

87

,09

-91

1,1

18

82

,94

1 4

36

,68

5 9

12

,27

3 5

92

,65

6 2

91

45

66

87

,09

-82

4,0

57

73

0,3

31

4,9

61

57

0,9

71

2 9

43

,50

3 6

27

,24

7 7

45

,29

6 2

91

45

66

87

,09

-91

1,1

18

82

,79

1 4

58

,74

5 8

31

,12

3 4

89

,59

6 2

91

45

66

87

,09

-82

4,0

57

54

6,9

71

4,9

91

57

0,5

31

2 4

19

,90

3 2

87

,41

7 5

61

,96

6 2

91

45

66

87

,09

-91

1,1

18

82

,85

1 4

81

,90

5 5

48

,90

3 1

84

,15

6 2

91

45

66

87

,09

-82

4,0

57

48

0,5

61

4,9

21

56

7,6

21

2 4

65

,90

3 4

02

,80

7 4

95

,48

6 2

91

45

66

87

,09

-91

1,1

18

82

,92

1 4

90

,22

5 4

85

,74

3 1

12

,60

6 2

91

45

66

87

,09

-82

4,0

57

49

3,2

61

4,9

61

57

0,6

01

2 2

74

,60

3 1

95

,78

7 5

08

,22

6 2

91

45

66

87

,09

-91

1,1

18

82

,71

1 3

68

,85

5 4

76

,67

3 2

25

,11

6 2

91

45

66

87

,09

-82

4,0

57

66

6,3

81

4,9

81

55

4,5

41

2 7

09

,80

3 4

73

,90

7 6

81

,36

6 2

91

45

66

87

,09

-91

1,1

18

82

,87

1 3

70

,94

5 5

00

,93

3 2

47

,12

6 2

91

45

66

87

,09

-82

4,0

57

81

3,9

41

4,9

91

57

0,3

01

2 7

04

,60

3 3

05

,37

7 8

28

,93

6 2

91

45

66

87

,09

-91

1,1

18

82

,79

1 4

66

,22

5 7

69

,56

3 4

20

,55

mo

ye

nn

e7

64

7,2

41

4,9

71

54

6,5

11

2 5

86

,33

3 3

77

,62

7 6

62

,20

mo

ye

nn

e8

82

,82

1 4

51

,60

5 6

45

,55

3 3

11

,13

nb

tir

ag

es

ren

de

me

nt

spo

tV

aR

tem

ps

RN

G (

ms)

tem

ps

tira

ge

s (m

s)te

mp

s tr

i (m

s)te

mp

s to

tal

(ms)

tem

ps

au

tre

(m

s)te

mp

s ti

rag

es+

RN

Gn

b t

ira

ge

sre

nd

em

en

t sp

ot

Va

Rte

mp

s R

NG

+ti

rag

es

(ms)

tem

ps

tri

(ms)

tem

ps

tota

l (m

s)te

mp

s a

utr

e (

ms)

12

58

2 9

12

68

7,0

9-8

43

,35

15

24

4,5

02

9,9

43

06

0,2

12

1 7

17

,40

3 3

82

,75

15

27

4,4

41

2 5

82

91

26

87

,09

-91

1,1

11

83

9,2

62

85

4,5

88

09

1,0

63

39

7,2

2

12

58

2 9

12

68

7,0

9-8

43

,35

15

31

1,1

02

9,9

23

07

1,7

12

1 7

06

,30

3 2

93

,57

15

34

1,0

21

2 5

82

91

26

87

,09

-91

1,1

11

83

8,9

82

85

1,9

78

35

5,9

73

66

5,0

2

12

58

2 9

12

68

7,0

9-8

43

,35

15

06

6,7

02

9,8

92

95

6,6

62

1 3

25

,90

3 2

72

,65

15

09

6,5

91

2 5

82

91

26

87

,09

-91

1,1

11

83

8,9

52

86

8,6

28

31

8,6

33

61

1,0

6

12

58

2 9

12

68

7,0

9-8

43

,35

15

08

6,0

02

9,9

73

07

4,9

91

9 4

62

,50

1 2

71

,54

15

11

5,9

71

2 5

82

91

26

87

,09

-91

1,1

11

83

8,9

42

85

4,3

28

20

9,1

03

51

5,8

4

12

58

2 9

12

68

7,0

9-8

43

,35

14

99

9,1

02

9,9

22

86

8,9

92

1 2

54

,50

3 3

56

,49

15

02

9,0

21

2 5

82

91

26

87

,09

-91

1,1

11

83

8,9

72

85

2,5

27

99

0,9

83

29

9,4

9

12

58

2 9

12

68

7,0

9-8

43

,35

15

39

3,3

02

9,8

53

02

7,7

72

1 8

59

,10

3 4

08

,18

15

42

3,1

51

2 5

82

91

26

87

,09

-91

1,1

11

83

9,1

72

85

1,5

08

29

7,0

03

60

6,3

3

12

58

2 9

12

68

7,0

9-8

43

,35

15

17

7,2

02

9,8

63

07

2,9

32

1 5

59

,90

3 2

79

,91

15

20

7,0

61

2 5

82

91

26

87

,09

-91

1,1

11

83

9,0

32

85

1,9

08

00

7,4

13

31

6,4

8

12

58

2 9

12

68

7,0

9-8

43

,35

15

39

3,2

02

9,9

63

05

8,1

92

1 9

23

,90

3 4

42

,55

15

42

3,1

61

2 5

82

91

26

87

,09

-91

1,1

11

83

8,9

72

85

2,1

57

82

0,8

33

12

9,7

1

12

58

2 9

12

68

7,0

9-8

43

,35

15

03

1,1

02

9,9

42

95

4,5

62

1 2

98

,20

3 2

82

,60

15

06

1,0

41

2 5

82

91

26

87

,09

-91

1,1

11

83

9,0

32

85

1,2

58

06

4,5

83

37

4,3

0

12

58

2 9

12

68

7,0

9-8

43

,35

15

22

8,4

02

9,9

23

04

2,7

82

1 8

19

,80

3 5

18

,70

15

25

8,3

21

2 5

82

91

26

87

,09

-91

1,1

11

83

8,9

92

85

1,1

68

08

1,3

53

39

1,2

0

mo

ye

nn

e1

5 1

93

,06

29

,92

3 0

18

,88

21

39

2,7

53

15

0,8

91

5 2

22

,98

mo

ye

nn

e1

83

9,0

32

85

4,0

08

12

3,6

93

43

0,6

7

Figure 2.2 – résultat des benchmarks sur NEF - partie 2

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

20

Page 22: Calcul de VaR par Monte-Carlo sur GPU

Simulation de la VaR Monte-Carlo sur GPU

Ca

lcu

l1C

alc

ul2

RN

GC

PU

seu

il c

on

fia

nce

0,9

9R

NG

GP

Use

uil

co

nfi

an

ce0

,99

Tir

ag

es

GP

Uh

ori

zon

1T

ira

ge

sG

PU

ho

rizo

n1

Tri

CP

UT

riC

PU

nb

tir

ag

es

ren

de

me

nt

spo

tV

aR

tem

ps

RN

G (

ms)

tem

ps

tira

ge

s (m

s)te

mp

s tr

i (m

s)te

mp

s to

tal

(ms)

tem

ps

au

tre

(m

s)te

mp

s ti

rag

es+

RN

Gn

b t

ira

ge

sre

nd

em

en

t sp

ot

Va

Rte

mp

s R

NG

+ti

rag

es

(ms)

tem

ps

tri

(ms)

tem

ps

tota

l (m

s)te

mp

s a

utr

e (

ms)

25

16

5 8

24

68

7,0

9-8

43

,35

29

92

1,5

05

9,8

46

07

9,3

83

9 6

56

,40

3 5

95

,68

29

98

1,3

42

5 1

65

82

46

87

,09

-93

7,2

03

82

4,5

95

87

4,8

81

3 1

07

,70

3 4

08

,23

25

16

5 8

24

68

7,0

9-8

43

,35

30

30

9,4

05

9,8

16

09

6,7

03

9 9

17

,60

3 4

51

,69

30

36

9,2

12

5 1

65

82

46

87

,09

-93

7,2

03

82

4,5

45

87

4,6

81

3 0

14

,00

3 3

14

,78

25

16

5 8

24

68

7,0

9-8

43

,35

30

40

4,0

05

9,8

05

98

0,9

33

9 8

95

,50

3 4

50

,77

30

46

3,8

02

5 1

65

82

46

87

,09

-93

7,2

03

82

4,5

35

87

4,4

31

3 2

45

,70

3 5

46

,74

25

16

5 8

24

68

7,0

9-8

43

,35

30

01

6,2

05

9,5

96

07

4,1

03

9 7

77

,90

3 6

28

,01

30

07

5,7

92

5 1

65

82

46

87

,09

-93

7,2

03

82

4,6

05

87

4,2

91

3 1

27

,00

3 4

28

,11

25

16

5 8

24

68

7,0

9-8

43

,35

30

07

2,3

05

9,8

36

08

7,0

93

9 7

36

,70

3 5

17

,48

30

13

2,1

32

5 1

65

82

46

87

,09

-93

7,2

03

82

4,6

95

87

3,8

51

3 1

92

,20

3 4

93

,66

25

16

5 8

24

68

7,0

9-8

43

,35

30

05

3,6

05

9,6

96

09

8,5

13

9 6

45

,90

3 4

34

,10

30

11

3,2

92

5 1

65

82

46

87

,09

-93

7,2

03

82

4,5

55

87

2,8

51

3 1

58

,90

3 4

61

,50

25

16

5 8

24

68

7,0

9-8

43

,35

30

27

9,1

05

9,9

16

08

7,3

73

9 9

46

,80

3 5

20

,42

30

33

9,0

12

5 1

65

82

46

87

,09

-93

7,2

03

82

4,6

45

87

4,9

41

3 1

27

,00

3 4

27

,42

25

16

5 8

24

68

7,0

9-8

43

,35

30

16

2,3

05

9,6

16

04

6,7

24

0 1

04

,80

3 8

36

,17

30

22

1,9

12

5 1

65

82

46

87

,09

-93

7,2

03

82

4,6

55

87

7,8

51

2 9

29

,50

3 2

27

,00

25

16

5 8

24

68

7,0

9-8

43

,35

29

92

4,3

05

9,7

76

08

6,5

43

9 6

39

,30

3 5

68

,69

29

98

4,0

72

5 1

65

82

46

87

,09

-93

7,2

03

82

4,7

75

87

3,2

01

3 0

05

,10

3 3

07

,13

25

16

5 8

24

68

7,0

9-8

43

,35

29

87

3,2

05

9,7

36

07

3,5

63

9 6

37

,80

3 6

31

,31

29

93

2,9

32

5 1

65

82

46

87

,09

-93

7,2

03

82

4,5

65

87

5,1

01

3 2

54

,60

3 5

54

,94

mo

ye

nn

e3

0 1

01

,59

59

,76

6 0

71

,09

39

79

5,8

73

56

3,4

33

0 1

61

,35

mo

ye

nn

e3

82

4,6

15

87

4,6

11

3 1

16

,17

3 4

16

,95

nb

tir

ag

es

ren

de

me

nt

spo

tV

aR

tem

ps

RN

G (

ms)

tem

ps

tira

ge

s (m

s)te

mp

s tr

i (m

s)te

mp

s to

tal

(ms)

tem

ps

au

tre

(m

s)te

mp

s ti

rag

es+

RN

Gn

b t

ira

ge

sre

nd

em

en

t sp

ot

Va

Rte

mp

s R

NG

+ti

rag

es

(ms)

tem

ps

tri

(ms)

tem

ps

tota

l (m

s)te

mp

s a

utr

e (

ms)

50

33

1 6

48

68

7,0

9-8

66

,30

60

71

7,1

01

19

,43

12

20

7,7

07

6 8

22

,70

3 7

78

,47

60

83

6,5

35

0 3

31

64

86

87

,09

-94

4,2

47

94

1,5

61

2 0

98

,50

23

52

4,8

03

48

4,7

4

50

33

1 6

48

68

7,0

9-8

66

,30

60

09

9,8

01

19

,62

12

17

9,4

07

4 6

46

,20

2 2

47

,38

60

21

9,4

25

0 3

31

64

86

87

,09

-94

4,2

47

94

1,3

81

2 0

96

,40

23

70

1,0

03

66

3,2

2

50

33

1 6

48

68

7,0

9-8

66

,30

60

20

6,1

01

19

,62

12

19

7,3

07

6 4

39

,90

3 9

16

,88

60

32

5,7

25

0 3

31

64

86

87

,09

-94

4,2

47

94

1,5

11

2 0

94

,00

23

41

4,7

03

37

9,1

9

50

33

1 6

48

68

7,0

9-8

66

,30

59

85

5,9

01

19

,19

12

19

8,9

07

6 0

04

,80

3 8

30

,81

59

97

5,0

95

0 3

31

64

86

87

,09

-94

4,2

47

94

1,5

51

2 0

95

,50

23

82

6,6

03

78

9,5

5

50

33

1 6

48

68

7,0

9-8

66

,30

60

45

2,4

01

19

,55

12

18

5,8

07

6 6

94

,20

3 9

36

,45

60

57

1,9

55

0 3

31

64

86

87

,09

-94

4,2

47

94

1,3

01

2 1

02

,40

23

49

4,4

03

45

0,7

0

50

33

1 6

48

68

7,0

9-8

66

,30

60

06

5,2

01

19

,28

12

07

9,7

07

6 1

17

,00

3 8

52

,82

60

18

4,4

85

0 3

31

64

86

87

,09

-94

4,2

47

94

1,2

21

2 0

95

,70

23

29

8,1

03

26

1,1

8

50

33

1 6

48

68

7,0

9-8

66

,30

60

66

0,1

01

19

,38

12

16

1,5

07

7 0

74

,10

4 1

33

,12

60

77

9,4

85

0 3

31

64

86

87

,09

-94

4,2

47

94

1,8

51

2 1

02

,50

23

46

0,9

03

41

6,5

5

50

33

1 6

48

68

7,0

9-8

66

,30

60

33

2,4

01

19

,38

12

20

8,7

07

6 4

46

,20

3 7

85

,72

60

45

1,7

85

0 3

31

64

86

87

,09

-94

4,2

47

94

1,8

11

2 0

95

,10

23

45

1,6

03

41

4,6

9

50

33

1 6

48

68

7,0

9-8

66

,30

60

62

5,2

01

19

,46

12

07

6,1

07

7 0

44

,80

4 2

24

,04

60

74

4,6

65

0 3

31

64

86

87

,09

-94

4,2

47

94

1,7

71

2 0

96

,10

23

31

7,9

03

28

0,0

3

50

33

1 6

48

68

7,0

9-8

66

,30

60

37

2,9

01

19

,59

12

20

8,9

07

6 4

87

,50

3 7

86

,11

60

49

2,4

95

0 3

31

64

86

87

,09

-94

4,2

47

94

1,6

71

2 0

97

,30

23

55

0,2

03

51

1,2

3

mo

ye

nn

e6

0 3

38

,71

11

9,4

51

2 1

70

,40

76

37

7,7

43

74

9,1

86

0 4

58

,16

mo

ye

nn

e7

94

1,5

61

2 0

97

,35

23

50

4,0

23

46

5,1

1

Figure 2.3 – résultat des benchmarks sur NEF - partie 3

Pierre Aït-Tahar Paraita WohlerMaster IMAFA - 2012/2013

21