Parallelism or Paralysis: The Essential High Performance Debate | June 2014
2014 The TABB Group, LLC. All Rights Reserved. May not be reproduced by any means without express permission. |
Parallelism can significantly boost the performance and throughput of problems that are well suited for it – that is, large problems that can be decomposed easily into smaller problems that are then solved in parallel. It is technology’s answer to
divide et impera
– divide and conquer. Truth be told, however, parallelism may not be right for all firms and definitely is not right for all use cases. On top of the hardware and code development challenges, there are applications with no known way to parallelize them today. For instance, those cases that are related to alpha discovery and capture are really tough to optimize because the out-of-sample behavior is so dynamic. From a programmer’s perspective, parallel programming brings a number of challenges to the table that don’t exist for sequential programming. These include a lack of basic developer tools (IDEs, compilers, debuggers, etc.), the added complexity of writing thread-safe parallel algorithms, and exposure to low-level programming languages such as C and C++. Specific capital markets examples of these include:
Derivatives pricing (including swaps) and volatility estimation;
Credit value adjustment (CVA) and other “xVA” calculations; and,
Value-at-Risk (VaR), stress tests and other risk analytics. These examples represent a subset of a much broader spectrum of computational challenges that generally exhibit the greatest potential for parallelism, including those that use or require:
Used for matrix or vector multiplication; often a fundamental part of in finance, bioinformatics and fluid dynamics.
Monte Carlo Simulations:
Taking a single function, executing it in parallel on independent data sets, and using the results to glean actionable knowledge – for example, identifying probabilistic outcomes, including “fat tail” events, in a financial portfolio.
Fast Fourier Transformations (FFTs):
Converting time domains into frequency domains, and vice versa; essential for signal processing applications and useful for options pricing and other financial time series analysis, including applications in high-frequency trading.
With each pixel calculated separately, there is ample opportunity for parallelism – for example, facial recognition software.
Taking large datasets and distributing the data filtering, sorting and aggregation workloads across multiple nodes in a compute cluster – for example, Google’s MapReduce or Hadoop.