| industrial collaborators: | Willis |
| academic collaborators: | King's College London |
| initiated : | 2009/10/12 |
| last updated: | 2011/03/03 |
Project staff and support
Asad Munir (Intern, King's College London)
Jurgen Gaiser-Porter (Company Supervisor, Willis)
William Shaw (Academic Mentor, King's College London)
Tristram Armour (Technology Translator, Industrial Mathematics KTN)
This Internship project was carried out at Willis, in conjunction with King's College London. It was a part of the KTN's Industrial Mathematics Internships Programme and was funded by NERC. Start date: April 2010; duration: 3 months.
Willis is currently investing significant resources in the development of the next generation of catastrophe models for support of the transactional business.
Willis have a new experimental prototype tool for optimising the placement strategy of client reinsurance programmes. This is particularly computationally demanding task demanding running tens of thousands of different strategies. However, timetables for their clients to make certain decisions about reinsurance placements can be measured in days so having fast tools is key. The intern demonstrated the speed gains possible by using Graphical Processing Units (GPU).
Project outcome
To solve the problem at hand three prototypes were created:
- RROptimiserPT1: In order to monitor the possible performance benefits of CUDA it was only natural to start with a benchmark. This was created as a multithreaded C++ application utilising the BOOST and ATLAS (an architecture optimised BLAS implementation) libraries.
- RROptimiserPT2: Although CUDA is a low level language used to program general purpose graphics processors (GPGPU’s), several high level libraries such as THRUST and CUBLAS have been written to access the functionality of the GPGPU without the need to write low level code. From a maintenance point of view it seemed logical to exploit the power of these libraries next. Unfortunately though while these libraries are good at solving one large problem in parallel, they are not designed to solve several small problems in parallel, which was the motivation of the next prototype.
- RROptimiserPT3: An application written in CUDA and C++. This program computes several (approximately 4000) reinsurance result vectors in parallel, making it superior to the previous approaches. The high level libraries mentioned above do not allow for this approach.
The results for the three applications are summarized in the table below.
| number of layers | number of portfolios | RROptimiser1 execution time (s) | RROptimiser2 execution time (s) | RROptimiser3 execution time (s) |
|---|---|---|---|---|
| 3 | 1331 | 3.2 | 10 | 0.39 |
| 4 | 14641 | 13.8 | 30 | 1.16 |
| 5 | 161051 | 118 | 360 | 9.55 |
| 6 | 1771561 | 1359 | 4120 | 105.58 |
A computation that took 50 minutes to complete by a single threaded java application took two minutes to solve on 36 computers operating in parallel without using a GPGPU. It now takes nine seconds to compute on a single General Purpose Graphics Processing Unit (GPGPU) which costs a little over £100.
“In Willis' analytical services division we've come across an algorithm that requires many matrix multiplications and sort operations. In order to speed up the algorithm, one idea was to use graphical processing units (GPU). Asad Munir, a PhD student from Kings College London, took up the task of implementation and to our surprise, there was very little speed improvement when using available library algorithms. Asad analysed the problem and implemented his own solution, coded in CUDA, and achieved a 10-fold increase in execution speed. Great result,” said industrial supervisor Jurgen Gaiser-Porter, Willis.
related resources:
| » | Reinsurance strategy optimisation |
| Technical summary | |
| [Find other Finance projects] |