BNP Paribas convertit une partie de ses simulations au processeur graphique NVidia
L'activité Global Equities and commodities derivatives de BNP Paribas CIB vient de mettre en production une architecture à base d'accélérateurs graphiques Nvidia pour accélérer ses calculs de dérivés d’actions complexes. A la clé des gains de performances impressionnants mais surtout une empreinte physique et une consommation électrique fortement réduites. De quoi réaliser de sensibles économies en exploitation quotidienne.
L'activité Banque d'investissement et d'affaires de BNP Paribas (BNP Paribas Corporate and investment Banking) a mis en production une nouvelle architecture de calcul utilisant des co-processeurs de calcul Nvidia de la gamme Tesla. La plate-forme mise en oeuvre comprend 2 unités Nvidia Tesla S1070 (soit au total 8 cartes Tesla) pilotées par deux serveurs x86 et offre des performances de l'ordre du TeraFlop. Elle est utilisée pour réaliser une partie des calculs de dérivés d’actions complexes et vient décharger un cluster de calcul à base de processeurs Xeon, en prenant en charge certains calculs particulièrement adaptés au GPGPU.
Une forte réduction de la consommation et des coûts d'hébergement
Selon BNP Paribas, l'architecture mise en oeuvre a permis de réduire la consommation électrique d'un facteur de 190 pour les codes portés sur GPGPU. Les temps de réponse applicatifs ont quant à eux été divisés par 15 sur la partie de code optimisée, si bien que des calculs qui autrefois s'effectuaient en batch nocturne sont aujourd'hui mis à la disposition des opérateurs de marché au fil de l'eau.
Comme l'explique Dominique le Campion, l'un des membres de l'équipe R&D recherche quantitative et développement chez BNP Paribas Global Equities and commodities derivatives (GECD), les GPU Nvidia ont attiré l'attention de l'équipe pour leur rapport performance/coût consommation. « 50% de nos coûts sont des coûts d'hébergement et de consommation électrique et le principal intérêt des puces Nvidia est une réduction drastique du coût de calcul par watt. Avec la solution Tesla que nous avons mise en place, nous effectuons ainsi avec un demi-rack, ce qui autrefois nécessitait plus de deux racks de serveurs ».
Des gains de performances impressionnants
BNP Paribas a en fait débuté ses expérimentations sur le GPGPU en 2007 avec l'arrivée de CUDA, l'environnement de programmation en C des processeurs graphiques Nvidia. Comme l'explique Florent Duguet, consultant de la société AltiMesh, qui a travaillé pour BNP Paribas sur l'optimisation des codes sur GPGPU, « on travaillait sur un projet de gestion de portefeuille. Quand CUDA est sorti, j'ai fait une première simulation de Monte Carlo et je suis venu présenter les premiers résultats à Stéphane Tyc » - NDLR : Stéphane Tyc est directeur de la recherche quantitative de la division GECD chez BNP Paribas CIB. Il s'est montré très intéressé et nous avons lancé un projet d'optimisation de certains codes pour ces plates-formes.
Très rapidement, l'équipe de R&D obtient des speedup très intéressants sur ses codes, ce qui valide définitivement le concept. Reste alors à poursuivre les développements et à valider le code de la nouvelle application optimisée. « Nous avions des variations de résultats par rapport à l'application précédente. Cette phase de validation a été importante et a permis de régler deux classes de problèmes, des problèmes purement informatiques et des problèmes d'algorithmique ».
Selon Florent Duguet, les gains extraordinaires de performances obtenus par BNP Paribas sur ses codes optimisés viennent du fait que l'application qui a été portée se prête très bien au GPU. “Nous ne sommes pas dans une configuration d'algèbre linéaire. Il y a des fonctions transcendantes partout dans le programme, donc on a des gains de performances extrêmement intéressants.”
Les opérations telles que l'addition, la multiplication, les fractions ou les fonctions polynomiales sont qualifiées de fonctions algébriques. Par opposition, les fonctions exponentielles et logarithmiques, les fonctions trigonométriques (cosinus, sinus, tangente et leurs dérivées...) sont regroupées sous l'appellation fonctions transcendantes. Les caractéristiques des GPU – grand nombre d'unités de calcul, bande passante mémoire très élevée - étaient donc idéales.
De plus, la portion de d'application optimisée pour les GPU est très « Compute Bound », c'est à dire que son temps de complétion est dépendant de la performance du processeur et notamment de sa capacité à maintenir 100% de sa performance sans être perturbé par des facteurs extérieurs, comme une trop faible bande passante mémoire, des opérations d'entrées/sorties trop lentes... Elle ne fait ainsi pas usage d'entrée/sorties disque, mais «requiert la lecture d'importants volumes de données en entrée donc la bande passante mémoire est un gros sujet ».
Or, le contrôleur mémoire du GPU fournit une bande passante impressionnante (environ 120 à 140 Go/s) et assure donc une alimentation ininterrompue des unités de calculs en données. C'est d'ailleurs ce que confirme Florent Duguet. A titre de comparaison, à 120 Go/s, on est très au-delà des capacités du plus rapide des processeurs x86, puisque même un Xeon Nehalem plafonne un peu au dessus des 30 Go/s en bande passante mémoire.
Des développements qui se poursuivent
Pour autant, la plus grosse partie des codes de l'entité GECD de BNP Paribas CIB continuent de tourner sur un cluster Xeon. « On ne peut redévelopper le million de lignes de code de l'application pour les plates-formes GPU du jour au lendemain », explique Dominique le Campion et cela ne fait pas sens pour certaines portions de code. Plus pragmatiquement, BNP Paribas devrait donc continuer ses développements sur le GPGPU et porter sur plate-formes Nvidia les codes pour lesquels cela fait sens et pour lesquels le bénéfice en terme de rapport calcul/temps/consommation est optimal.
Quand à la question de savoir pourquoi le développement s'est effectué sur Nvidia et pas sur AMD, la réponse de Florent Duguet est simple : Ce n'est pas une question matérielle, mais une question logicielle. « Entre Nvidia et ATI, la principale différence est la qualité et la stabilité du SDK. Et pour l'instant, celui d'ATI change bien trop souvent. » Cela n'empêche pas La banque d'effectuer une veille sur l'ensemble des acteurs du secteur. Il sera intéressant de voir comment évolue sa position avec l'arrivée attendue du Larabee d'Intel ou avec la montée en puissance du support d'OpenCL chez les constructeurs.
A lire aussi :
- Pour Nvidia, le Larabee d'Intel n'est que de la poudre aux yeux