NAG Logo
Numerical Algorithms Group
Join our Group at LinkedIn Follow NAGTalk on Twitter
graphic

NAG Numerical Routines for GPUs

GPUs, NAG and the Finance Industry

The new many-core GPU computing architecture, which is designed to be multi-threaded and highly parallel in nature, is ideally suited to Monte Carlo applications.

Monte Carlo Simulation

Monte Carlo simulation methods are one of the main numerical techniques used in finance for derivative pricing and risk management. The major drawback of such techniques is that they are highly computationally intensive often requiring simulations of hundreds of thousands of sample paths in order to compute a fair option value within a certain level of standard errors. Using this technique on a conventional Central Processing Unit (CPU) architecture, even with the fastest desktop machines available today, may take hours to compute the current risk exposure of complex financial derivative contracts.

Random Number Generators

Random Number Generators (RNGs) are an important building block used for Monte Carlo simulations. It is therefore important that we select an efficient RNG which produces fast random number samples with known statistical properties.

Parallelizing the RNG

In order to make use of the high performance capabilities of GPUs, we need to ulitlize parallel algorithms. Specifically we need to have an algorithm capable of producing random samples in parallel whilst preserving statistical independence.

L'Ecuyer(MRG32k3a) [1] algorithm was selected as our basic random number generator. MRG32k3a has a suitably long period in double precision which is sufficient for most scientific applications. The skip-ahead capability of MRG32k3a is particularly suitable for parallel implementation [2] and can take advantage of the GPUs highly parallelized architecture.

The uniform random samples generated by MRG32k3a can then be transformed to samples from easily other distributions including Normal, exponential and Gamma distributions.

The NAG Numerical Routines for GPUs are currently implemented in C using the C extensions provided by NVIDIA’s CUDA interface. We plan to support the emerging OpenCL standard.

References:

[1] L'Ecuyer P (1999) Good parameter sets for combined multiple recursive random number generators Operations Research 47:1 159–164

[2] L'Ecuyer P, Simar R, Chen E J and Kelton W D (2002) An object-oriented random-number package with many long streams and substreams Operations Research 50:6 1073–1075

Acknowledgements

We would like to thank the Technology Strategy Board (TSB) and the Smith Institute for their support in sponsoring this project and EPSRC for supporting Professor Giles’ academic research

Trademarks

NVIDIA and CUDA are trademarks of NVIDIA Corporation.

 

© The Numerical Algorithms Group 2010
Privacy Policy | Trademarks

© Numerical Algorithms Group

Visit NAG on the web at:

www.nag.co.uk (Europe and ROW)
www.nag.com (North America)
www.nag-j.co.jp (Japan)

http://www.canadanews.nag.com/numeric/GPUs/finance_industry.asp