There have been a number of efforts lately to help delineate the differences between performance, portability and functionality on GPUs over the new Xeon Phi coprocessors, with some organizations benchmarking according to industry-specific algorithms.
This week we spoke with Jörg Lotze, CTO and cofounder of financial services-driven software firm, Xcelerit, about benchmarking accelerators, coprocessors, and multicore architectures with specific emphasis on how GPUs stack up against Intel Xeon Phi coprocessors. Lotze discussed the challenges and opportunities of each in the context of real-world Monte Carlo examples.
Jörg Lotze: I come from a research background in telecommunications engineering before we started Xcelerit. It sounds like a completely different field, but we were facing similar problems to what we’re seeing now in finance. It’s all about making fast real-time processing in various different bits of hardware. During that kind of research, we played around with the IBM Cell processor, with GPUs, with even embedded processors of all sorts, in order to make fast software radio implementations in that context and that’s where all this experience came from. That’s also how the idea for this company and this tool came about.
All these techniques and things learned there, we quickly realized that they can be applied in an industrial context in a completely different field. And that’s what we are focusing on now. We are providing software for finance that allows quantitative analysts to implement their algorithms and focus on their algorithms and we take care to automatically get the benefit of all this high-performance hardware without the users having to worry about all these low-level implementation details, so in a sense it makes it possible for quants to write fast software, which is easy to maintain, and benefit from these really interesting new hardwares.
HPCwire: So we’re going to get to your findings about the comparisons in a minute, but first it’s important to note that you tested this across a couple of different types algorithms. Will you set us up on why this is important for this benchmark?
Lotze: Yes, so for any benchmark, it’s always important to see it in context, you can’t just answer the question of which one is better generically. Here because our clients are in finance mostly, we looked at two algorithms, which are often occurring in the financial world and and we picked two, which have different characteristics.
he first one is an embarrassingly parallel Monte Carlo for pricing swaption portfolio. Embarrassingly parallel in a sense all the Monte Carlo parts are completely parallel, there literally are no sequential bits.
The second is for processing American options using a Monte Carlo technique as well, but here those paths are not independent. Each time step needs some regression computed over the whole path in order to go back to the previous one. We don’t have independent paths here and we have an iterative component, which is not good for parallelism in general, so it’s really a different characteristic. That’s why we picked those two different applications.
HPCwire: These are representative algorithms across all of financial services, right?
Lotze: Yes, in finance pricing, Monte Carlo is the dominant American technique, and American-style options are around a lot, and the other one as well, so it represents a large set of common pricing methods.
HPCwire: It’s a very real world context here. To get to the hardware side of this, you ran your tests using Xeon Phi, NVIDIA’s Tesla K20-X, and “Sandy Bridge” for a point of comparison – can you set us up on the hardware side now?
Lotze: We’ve been using the brand-new Xeon Phi as an accelerator processor, an accelerator processor that just came out this year and it’s basically massively parallel – it has 60 cores, 4x hyper-threaded, so you end up having 240 hardware threads that you can exploit. And it’s a wide vector unit, so it’s for highly parallel number-crunching. The same can be said for the Tesla GPU, but this has been around for longer. Lots and lots of parallel units that should be kept busy for highly-parallel processing. It’s also a coprocessor. And of course, for comparison, we looked at a standard CPU which you can find in practically all servers, which is the Xeon “Sandy Bridge” generation – they are also multicore and they are very powerful – so it always makes sense to look at all three of those in relation and not just the Phi and the Tesla.
When you see those platforms, everybody just thinks about teraflops and how fast these are for compute capacity, but what’s equally important is how fast can it access its memory and how much time is spent getting the data into that memory. It’s always good to find the right balance between computing and memory, so if an application becomes compute bound, then yes you are going to get close to these teraflops that you see here. But that usually means for one memory access into a lot of instructions to make that work. So it’s always a balance between memory and computing instructions, and as soon as caching comes into play – which obviously is in place in all these platforms – this becomes a little bit unpredictable. So you never know if an application is really compute- or memory-bound before you put it to the test.
HPCwire: So what did you find in the context of these applications and the hardware-configuration that you set up?
Lotze: The first, the Monte Carlo, is also very compute-heavy and uses relatively little memory, so this is strongly compute-bound of all the platforms, which is ideal for the parallel processors like the Phi and the GPU. It can be seen here clearly. We got speedups of the Kepler GPU compared to sequential of 96x, and the Phi of like 45x, the parallel “Sandy Bridge” also got faster, nearly 20X faster.
You can clearly see that it’s case-variable for highly-parallel architectures.
HPCwire: In your conclusion section, you make a really good point, which I’ll read verbatim:
We’ve seen that there is one processor that needs to be added to the picture — the commodity multi-core CPU. This is already a part of many server configurations, and for some applications, e.g., Monte-Carlo pricing of American options, it can give better or comparable performance than an accelerator processor when optimized correctly. Between NVIDIA’s Kepler GPUs and Xeon Phi, the GPU wins for both of our test applications.
Lotze: Lots of people just think about those accelerative processors on their own, but they should always consider the parallel CPU as well. So here we have a 16-core “Sandy Bridge” system, and if it’s heavily optimized, it’s only about 2-and-a half-times slower than the Xeon Phi, and about 5X slower than the Tesla GPU. So all those massive speedups that I’ve just said is compared to sequential, but the parallel highly optimized “Sandy Bridge” can also get pretty fast. Now for this application, the first one, which is embarrassingly parallel, still there’s a huge benefit from using GPUs or the Xeon Phi for this. The main point for our conclusion is that the American Monte Carlo, which has an iterative step in it, so it’s not fully parallel, actually the “Sandy” Bridge is the fastest, or rather it’s about the same speed as the GPU. I think that’s kind of an interesting finding here, which tells you that you should consider all the platforms when you are comparing a specific algorithm.
HPCwire: You mentioned there were a lot of parallels between what you are doing here and telecommunications. Do you think that this same set of findings is going to be true for some other key markets in a very similar way and if so what are those? Where is this most relevant outside of financial services?
Lotze: I think it’s generally relevant. You shouldn’t just compare the GPU and the Phi, you should also put “Sandy Bridge” in the picture – that’s for sure. The other thing is it’s hard to tell in advance which one is going to be the best before you actually do testing because all these theoretical teraflops and memory bandwidth, doesn’t mean much for real applications. In general, I can see this working for oil and gas, biochemistry, and all these fields where high-performance computing is in use.
HPCwire: What are financial services firms actually doing? Would you say a lot of the work you are doing involves pretty vanilla configurations, lots of servers, not a lot of acceleration? How frequent is it that you find ultra-high performance accelerated systems in some of these firms?
Lotze: They are all looking a lot for high-performance systems, especially with the regulators coming in after the financial crisis. There has been a lot of added complexity to their risk computations for example, so now they need to do a lot more risk scenarios and have to compute new measures, and that’s across the whole portfolio of instruments that a bank has. You are talking about huge amount of data that needs to be priced for thousands of scenarios different contexts, and that’s usually in the Monte Carlo setup. You are looking at grids of hundreds of machines, running at 6-7 hours overnight and barely getting the work done, so this clearly a high-performance computing setup. I think what’s different with finance is that this is relatively new to them compared to oil and gas and physics. So they are just learning and there is not that crazy hardware expertise in all those different platforms and this is actually why we are there.
HPCwire: So you are saying that GPUs and coprocessors are still an experimental phase at a lot of financial services firms?
Lotze: No, I don’t say that – it’s become mainstream. A lot of banks have actually gone public, for example GP Morgan, about using large amounts of GPUs in their day-to-day real production process. It’s not an experimental thing anymore – it’s really gone mainstream there.
HPCwire: One last question for you. Do you see this trend that you have in your benchmarks with GPUs being the real winner changing as the technology develops? On the processor front, there are some interesting things around the corner.
Lotze: These are just two specific applications. I’m sure there will be others where this picture changes and is different. It’s really just two points in the whole big space of applications. So this is not a general answer, and I think the Phi will be better for other applications. Also, the Phi only came out this year, and Tesla GPUs have been around since 2007, so the picture might change a little bit. So I don’t think there is a general answer. All these platforms are good for something and you just have to find out what is best for yours. What also needs to be considered is there’s a lot of optimizations that went into this. There’s a week’s worth of work to tune it like this to get these numbers, while most users in a real-world context, they don’t have the time to do this.
HPCwire: Let’s talk very briefly about the optimization comparison between optimizing for GPU and for Xeon Phi, which supposedly is easier to get up and running, but the optimization is still pretty lengthy. Is that your experience also?
Lotze: Yes, in general, yes. But on both platforms, even on the GPU, it’s relatively quick to just have something running, but to get it fast on all these, and that includes the “Sandy Bridge” if you want to optimize it, it’s not easy to actually get the most out of the hardware. Those optimizations really take a good bit of expertise, and that’s also what our software development kit is trying to do so it automates those optimizations for users so they don’t need to worry about it. They can get one source code portably running on all these platforms, so they can see which one works best without hand-tuning everything. What also needs to be said is that all those optimizations make the code very specific to a specific hardware so the portability goes completely out the window, and that’s typically in a real-world context something that especially banks don’t want and I’m sure that in other fields it’s the same. Portability is quite important to them, so I doubt they will go down to that level of optimization that we see here.
HPCwire: This has been fascinating. Thank you for putting in the effort to compare both of these in the context of real-world applications.
Lotze: Thank you.