I have had a number of exchanges with the head of quantitative tools at the trading desk of one of the largest banks in Spain whose private banking subsidiary is considered one of the best boutique private banks. He is an enthusiast for getting indistinguishably close to the right answer very fast, so enjoys thinking about all sorts of optimization that could be done with his codes. He is confident that the area of greatest potential these days is figuring out how to squeeze out all the flops that come with GPUs. This is why he has shown interest in AccelerEyes and Jacket.
Since he joined the bank, they have modernized all the pricing and marketing tools that were hard to maintain and evolve (scattered Excel files). As a central part of that strategy they now have 10,000s of lines of MATLAB® code, and another 10,000s of lines of java – swing front ends. The choice of technology was simple: they wanted to use things that “just work” and were willing to pay a bit of a performance price for it. Everyday there is a new trade idea, so to the bank, having a product out the door in hours, is a lot more valuable than having a really fast pricer that took one month to implement in c++ but has no usable interface. Truth be told, at the bank they don’t make money from having fast codes, they make money by being proactive in offering trade ideas to their customers which lead to deals being made.
He has a good idea of how Jacket works at the high level, he also understands the “magic” of MATLAB objects and how they are used to map GPU matrices. That said, going from there to something that “just works”, like Jacket, is a significant achievement in his opinion, and is something many people would want to have access to.
Ease of use when leveraging GPUs and writing for-loops that fully capitalize on GPU computational horsepower are key ingredients to maximizing results in the bank. Having the ability to link to or call GPU libraries from MATLAB and toolboxes like financial, derivatives, fixed income, and econometrics does add some performance value – but a more holistic approach with GPU computing would deliver more significant results. This more holistic approach incorporates what Jacket calls lazy execution. Jacket waits to actually execute anything on the GPU until the right time– it batches things up, does some intermediate representations, manipulations, and optimizations. It is this lazy execution strategy that is a key feature, according to this head of quantitative tools. It hides latency and it allows for many smart optimizations. Given that the GHz wars are over, he thinks that going forward the only real way to get performance will be from being smart about what your hardware does and what you want to solve. End users most likely won’t know or find it worthwhile to know, so the task is left for the language / compiler experts to figure out – which is what AccelerEyes is doing.
Speaking of hardware, another key ingredient to the picture around GPU computing is that hardware is relatively inexpensive compared to CPU solutions that deliver similar performance. Any organization, large or small, can get their hands on a CUDA capable workstation and start getting high performance results without having to set up a cluster solution of CPUs which is much harder and requires the resources and skills of IT in order to get to production quickly. This is a show stopper in production environments where rapid results mean the difference between making a deal or not.
He thinks that financial services firms should pay most attention to the following areas as it relates to GPU computing:
- Trade signal generation
- Brute force complex derivative pricing
- Evaluating risk scenarios
- Signal processing of real time feeds
AccelerEyes is paying close attention to these areas and works closely with customers looking to solve these types of problems with GPUs. As more information is provided by our customers and we can get customers to share results, we will.