FPGA and GPU Approaches
Coding style generally
Mathema's default coding style developed from Mathema's background in real-time applications in financial markets. This default coding style may be best described as typically compile-time, asynchronous, massively parallel, low latency and low level. Mathema's core strength is in compute intensive C/C++ and OpenCL.
Mathema uses a number of techniques and compile time abstractions to write code that is portable across CPU, GPU and FPGA.
Mathema typically delivers code in OpenCL.
GPU
The majority of Mathema's compute-intensive assignments tend to ultimately involve deployment of some, if not the majority of code on the GPU. Typically code is prototyped on a CPU basis first and unit tested. Mathema has a number of tools to assist with the migration from proven CPU code to GPU code.
FPGA
Systolic arrays are often well suited for "multiply and accumulate" operations, to perform massively parallel integration, convolution, correlation, matrix multiplication and data sorting tasks. They are also used for dynamic programming algorithms and are used in DNA and protein sequence analysis.
Mathema has expertise in deploying Field Programmable Gate Arrays for a variety of financial services and life sciences applications including
- decoding/parsing FIX/FAST messages
- providing pre and post trade filtering
- ensemble simulation and valuation
- emitting messages for order routing and execution
- risk management and measurement
Typically with sub micro-second latencies