Parallelizing High-Frequency Trading Applications by Using C++11 Attributes

With the wide diffusion of parallel architectures parallelism has become an indispensable factor in the application design. However, the cost of the parallelization process of existing applications is still too high in terms of time-to-development, and often requires a large effort and expertise by the programmer. The REPARA methodology consists in a systematic way to express parallel patterns by annotating the source code using C++11 attributes transformed automatically in a target parallel code based on parallel programming libraries (e.g. FastFlow, Intel TBB). In this paper we apply this approach in the parallelization of a real high-frequency trading application. The description shows the effectiveness of the approach in easily prototyping several parallel variants of the same code. We also propose an extension of a REPARA attribute to express a user-defined scheduling strategy, which makes it possible to design a high-throughput and low-latency parallelization of our code outperforming the other parallel variants in most of the considered test-cases.

[1]  Sebastian Burckhardt,et al.  The design of a task parallel library , 2009, OOPSLA.

[2]  Henrique C. M. Andrade,et al.  Fundamentals of Stream Processing by Henrique C. M. Andrade , 2014 .

[3]  Henrique C. M. Andrade,et al.  Fundamentals of Stream Processing: Frontmatter , 2014 .

[4]  Barbara Chapman,et al.  Using OpenMP: Portable Shared Memory Parallel Programming (Scientific and Engineering Computation) , 2007 .

[5]  Raul Castro Fernandez,et al.  Integrating scale out and fault tolerance in stream processing using operator state management , 2013, SIGMOD '13.

[6]  Henrique C. M. Andrade,et al.  Fundamentals of Stream Processing: Conclusion , 2014 .

[7]  Bradley C. Kuszmaul,et al.  Cilk: an efficient multithreaded runtime system , 1995, PPOPP '95.

[8]  Claudio Soriente,et al.  StreamCloud: An Elastic and Scalable Data Streaming System , 2012, IEEE Transactions on Parallel and Distributed Systems.

[9]  S. Tucker Taft,et al.  Information technology — Programming Languages — Ada , 2001 .

[10]  Jennifer Widom,et al.  Models and issues in data stream systems , 2002, PODS.

[11]  Peter Kilpatrick,et al.  Design patterns percolating to parallel programming framework implementation , 2014, International Journal of Parallel Programming.

[12]  Alessandro Margara,et al.  Processing flows of information: From data stream to complex event processing , 2012, CSUR.

[13]  Tiziano De Matteis,et al.  A High-Throughput and Low-Latency Parallelization of Window-Based Stream Joins on Multicores , 2014, 2014 IEEE International Symposium on Parallel and Distributed Processing with Applications.

[14]  Marco Danelutto,et al.  Structured Parallel Programming with "core" FastFlow , 2013, CEFP.

[15]  Philip S. Yu,et al.  Processing high data rate streams in System S , 2011, J. Parallel Distributed Comput..