The WSJ ran an online article on April 27 about the increased use of GPUs and FPGAs to drive down latency in trading applications. The article quoted Tabb Group's Kevin McPartland, who had authored a research report on the topic back in June 2009.
The article comments that the move toward hardware acceleration is being driven by the convergence of several trends, including the pace of market data, the race for speed, and, interestingly, innovations in high-level languages that make programming these types of hardware easier. This last point caught our attention.
For GPUs, nVidia’s CUDA and the emerging OpenCL standard have made the task of coding easier; programmers can write in a familiar C-like language rather than a graphics coding language. FPGAs, however, remain more of a challenge to program because of the need to make hardware layout decisions within the program. Regardless as to how higher-level tools make the process of creating a program easier, creating an optimized program for a given architecture is still an extremely difficult task because the program still has to be designed with an understanding of the properties and capabilities of the underlying hardware.
Several recent initiatives (such as GPUmat for MATLAB, or the MAGMA project) are working to combine high-level coding with optimized execution for modern multi-core architectures and GPUs, but these solutions have focused on solving linear systems, and fall short on their ability to model complex nonlinear systems like biological networks or financial markets.
Comments | Post a Comment
4 Comments to "From the Biosciences: Translating Mathematical Expressions of Nonlinear Systems into Optimized Code for FPGAs, GPUs and Multi-core CPUs":
kmcpartland
03 May 2010
As stated, CUDA and other similar paradigms have made hardware acceleration accessible to more than just those programming in assembly language. Sounds like this technology isn't look to replace those advancements, but to make them even more accessible still. What also is amazing is that financial markets have become so complex that bioscience techniques, used to look at the most complicated (organic) networks on the planet, are being used to trade.
Comments (80)
serafini
05 May 2010
I haven't looked at FPGAs in a long time, but years ago I saw some presentations by a couple companies that had C compilers for their FPGAs. There were some non-trivial restrictions to using them, but the goal was to be able to compile the kernels of high-performance scientific software applications directly, with very little modification. Did any of that research come to fruitition?
Comments (1)
kmcpartland
05 May 2010
Looks like FPGA C compilers are out there at some level. This site lists it as Beta however which leads me to believe the technology is still rough around the edges: http://fpgac.sourceforge.net/. For financial services applications however I'd imagine anyone dabbling in FPGA's would not trust a compiler to create their VHDL as you probably don't have as much control over the actual implementation of the logic.
Comments (80)
mesorensen
05 May 2010
Kevin is right that the technology for auto-generating FPGA designs is still rough around the edges. One of the important factors that we've found is that the more constrained the problem becomes, the easier it is generate efficient code automatically. That's part of our organizing principle with simEngine; by operating under the assumption that we're working with differential and difference equations ("an interative bounded loop" in CS speak), we can make many optimizations that other compilers can't. On a somewhat related note, one of the big factors that plays into many of these technologies (and any compiler that targets them) is the numeric data type used for computation. FPGAs work best when fixed point data can be used, GPUs work best (currently) at single-precision floating point, and CPUs are optimized for double-precision floating point.
Comments (4)