Today NVIDIA announced the release of their fastest ever accelerator for scientific computing – the Tesla K80. It has more raw compute power than any other GPU card available on the market, featuring two of the new GK210 GPUs. But what performance improvements can we expect for typical financial applications? Xcelerit have been given early access to the card and put it to the test, comparing it to their previous flagship, the Tesla K40.

Hardware Comparison
The table below shows the key hardware differences between the two cards.
| Tesla K40 | Tesla K80 | |
| SMX | 15 | 2 x 13 |
| CUDA Cores | 2,880 | 2 x 2,496 |
| Memory | 12 GB | 2 x 12 GB |
| Core Frequency | 745 MHz | 562 MHz |
| Max Frequency | 875 MHz | 875 MHz |
| Memory Bandwidth | 288 GB/s | 480 GB/s |
| Max GFLOP/s (single) | 4,290 | 8,740 |
| Max GFLOP/s (double) | 1,430 | 2,910 |
| TDP | 245 watts | 300 watts |
The most notable difference is that the K80 features two GPUs on a single card, each with 12GB of memory. The maximum theoretical performance is about 2× faster than the K40. With 300 watts TDP, the K80 comes close to double the performance per watt. This helps to make the data centres greener and bring the energy costs down.
Monte-Carlo LIBOR Swaption Portfolio Pricing
Details of this algorithm have been described here. For convenience, we will briefly summarize it here.
A Monte-Carlo simulation is used to price a portfolio of LIBOR swaptions. Thousands of possible future development paths for the LIBOR interest rate are simulated using normally-distributed random numbers. For each of these Monte-Carlo paths, the value of the swaption portfolio is computed by applying a portfolio payoff function. The equations for computing the LIBOR rates and payoff are given here. Furthermore, the sensitivity of the portfolio value with respect to changes in the underlying interest rate is computed using Adjoint Algorithmic Differentiation (AD). This sensitivity is a Greek, called λ, as detailed here. Both the final portfolio value and the λ value are obtained by computing the mean of all per-path values.
The figure below illustrates the algorithm:

Note that this Monte-Carlo algorithm scales well across multiple GPUs with the Xcelerit SDK. It is therefore suitable to test the Tesla K80 card with its two GK210 GPUs.
Benchmark Setup
We compare the same application, implemented using the Xcelerit SDK 2.6.0, running on both the K40 and K80 cards. The system configuration is given in the following:
- CPU: 2 sockets, Ivy-Bridge (Intel Xeon E5-2690 v2)
- GPU: NVIDIA Tesla K40m and NVIDIA Tesla K80 (ECC on)
- OS: CentOS 6.5 (64bit)
- RAM: 128GB
- Development Tool: Xcelerit SDK 2.6.0
- GPU Backend: CUDA 6.5
- CPU Backend: GCC 4.7
Performance
We’ve measured the computation times for the Monte-Carlo LIBOR swaption portfolio pricer on each card, pricing a portfolio of 15 swaptions over 80 time steps and using varying numbers of Monte-Carlo paths. The run time of the full algorithm – including random number generation, data transfers, per-path computation, reduction and all memory allocations and data transfers – is compared for single and double precision in the graph below.

For better comparison, the following table shows the speedup factors of the K80 vs. the K40 for different numbers of paths:
| Paths | Speedup (single) |
Speedup (double) |
| 64K | 1.06× | 1.13× |
| 256K | 1.43× | 1.72× |
| 1024K | 1.84× | 1.93× |
Clearly, NVIDIA’s new Tesla K80 gives a significant performance improvement for a typical finance applications, especially with workloads high enough to justify using multiple GPU chips (up to 1.93× faster). In contrast to low-level programming approaches, the built-in multi-GPU support of the Xcelerit SDK required no code changes in order to use both GK210 chips on the K80 card.