conception and development of a pipe filter framework for
play

Conception and Development of a Pipe & Filter Framework for C++ - PowerPoint PPT Presentation

Conception and Development of a Pipe & Filter Framework for C++ Johannes Ohlemacher November 23, 2016 Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 1 / 38 Outline 1. Motivation


  1. Conception and Development of a Pipe & Filter Framework for C++ Johannes Ohlemacher November 23, 2016 Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 1 / 38

  2. Outline 1. Motivation 2. Goals 3. Foundations 4. Design and Evaluation of a SPSC Queue 5. Design and Evaluation of TeeTime for C++ 6. Conclusions and Future Work Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 2 / 38

  3. Motivation Motivation ◮ TeeTime ◮ high performance, low overhead Pipe-and-Filter (P&F) Framework ◮ flexibel and extensible ◮ architecture designed to be implementable in other languages Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 3 / 38

  4. Motivation Motivation ◮ TeeTime ◮ high performance, low overhead Pipe-and-Filter (P&F) Framework ◮ flexibel and extensible ◮ architecture designed to be implementable in other languages ◮ Why C++? ◮ How does the language influence the performance of TeeTime? ◮ Compare TeeTime with an established C++ solution (FastFlow) Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 3 / 38

  5. Goals Goals ◮ G1: Basic Pipe & Filter Setup ◮ G2: Ready-To-Use Stages ◮ G3: Support for Multiple Platforms ◮ G4: Comparison with FastFlow ◮ G5: Comparison with Java-based TeeTime Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 4 / 38

  6. The Pipe-and-Filter Architectural Style Foundations ◮ The Pipe-and-Filter Architectural Style (Christian Wulf, 2016) ◮ The Pipe-and-Filter Framework TeeTime (Wulf, Ehmke, and Hasselbring, 2014) ◮ The C++11 Programming Language (Meyers, 2014; Stroustrup, 2013) ◮ The FastFlow Programming Framework (M. Aldinucci et al., 2010) Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 5 / 38

  7. The C++11 Programming Language Foundations ◮ Native code ◮ Manual Memory Management ◮ Value Semantics ◮ Move Semantics Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 6 / 38

  8. The FastFlow Programming Framework Foundations ◮ Parallel Programming Framework ◮ Ready-to-use skeletons: Pipe and Taskfarm ◮ All Stages are active ◮ No value semantics Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 7 / 38

  9. The FastFlow Programming Framework Foundations Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 8 / 38

  10. The FastFlow Programming Framework Foundations Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 9 / 38

  11. Overview of existing SPSC queue implementations Design and Evaluation of a SPSC Queue ◮ Lamport: (Lamport, 1983) ◮ FastForward: (Marco Aldinucci, Danelutto, et al., 2012; Giacomoni, Moseley, and Vachharajani, 2008) 1 ❤tt♣s✿✴✴❣✐t❤✉❜✳❝♦♠✴❢❛❝❡❜♦♦❦✴❢♦❧❧② 2 ❤tt♣✿✴✴✇✇✇✳❜♦♦st✳♦r❣ Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 10 / 38

  12. Overview of existing SPSC queue implementations Design and Evaluation of a SPSC Queue ◮ Lamport: (Lamport, 1983) ◮ FastForward: (Marco Aldinucci, Danelutto, et al., 2012; Giacomoni, Moseley, and Vachharajani, 2008) value move Queue type type safe semantics semantics folly 1 Lamport yes yes yes boost 2 Lamport yes yes no FastFlow FastForward no no no 1 ❤tt♣s✿✴✴❣✐t❤✉❜✳❝♦♠✴❢❛❝❡❜♦♦❦✴❢♦❧❧② 2 ❤tt♣✿✴✴✇✇✇✳❜♦♦st✳♦r❣ Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 10 / 38

  13. Pointer-based FastForward Queue Design and Evaluation of a SPSC Queue Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 11 / 38

  14. Value-based FastForward Queue Design and Evaluation of a SPSC Queue Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 12 / 38

  15. Evaluation of SPSC queues Design and Evaluation of a SPSC Queue ◮ Test Environment 1. 2x Intel Xeon E5-2650, 2.8GHz, 8 cores, 128GB, Debian, gcc 4.9.2 2. 1x Intel i7 6700K, 4.2GHz, 4 cores, 16GB, Ubuntu, gcc 5.2.1 3. 1x Intel i7 6700K, 4.2GHz, 4 cores, 16GB, Windows 10, MSVC 2015 ◮ Test Scenarios ◮ Scenario 1: pointers ◮ Scenario 2: std::vector<int> ◮ Scenario 3: 4x4 double matrix Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 13 / 38

  16. Evaluation of SPSC queues Design and Evaluation of a SPSC Queue Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 14 / 38

  17. Overview Design and Evaluation of TeeTime for C++ <<abstract>> OutputPort<T> AbstractOutputPort * +send(value: T) source <<abstract>> AbstractStage <<abstract>> Pipe<T> +debugName +execute() * <<abstract>> InputPort<T> target +createRunnable() AbstractInputPort #addOutputPort(): OutputPort<T> +receive(): T #addInputPort(): InputPort<T> Configuration #declareStageActive(stage, cpuAffinity) #declareStageNonActive(stage) SynchedPipe<T, TQueue> UnsynchedQueue<T> #connectPorts(outputport, inputport, capacity) #createStage<T>(args...): Stage #createStageFromFunctionPtr(FunctionPtr): Stage #createStageFromLambda(lambda): Stage +executeBlocking() Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 15 / 38

  18. Configuration Design and Evaluation of TeeTime for C++ Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 16 / 38

  19. Functions and Lambdas Design and Evaluation of TeeTime for C++ Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 17 / 38

  20. Evaluation of TeeTime for C++ Design and Evaluation of TeeTime for C++ ◮ Test Environment 1. 2x Intel Xeon E5-2650, 2.8GHz, 8 cores, 128GB, Debian, gcc 4.9.2 ◮ Test Scenarios ◮ Scenario 1: CPU intensive ◮ Scenario 2: IO intensive ◮ Scenario 3: CPU and IO intensive ◮ Test Configurations ◮ C1: TeeTime (no affinity) ◮ C2: TeeTime (prefer same CPU) ◮ C3: TeeTime (avoid same core) ◮ C4: FastFlow (multi alloc) ◮ C5: FastFlow (single alloc) ◮ C6: TeeTime (Java) Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 18 / 38

  21. CPU intensive Scenario Design and Evaluation of TeeTime for C++ Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 19 / 38

  22. IO intensive Scenario Design and Evaluation of TeeTime for C++ Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 20 / 38

  23. CPU and IO intensive Scenario Design and Evaluation of TeeTime for C++ Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 21 / 38

  24. CPU and IO intensive Scenario Design and Evaluation of TeeTime for C++ Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 22 / 38

  25. Overview Design and Evaluation of TeeTime for C++ MD5 Benchmark, 20 µ s 22 Ideal C1: TeeTime (no affinity) 20 C2: TeeTime (prefer same CPU) C3: TeeTime (avoid same core) 18 C4: FastFlow (multi alloc) C5: FastFlow (single alloc) C6: TeeTime (Java) 16 14 Speedup 12 10 8 6 4 2 0 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 Number of worker threads Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 23 / 38

  26. Overview Design and Evaluation of TeeTime for C++ MD5 Benchmark, 500ns 22 Ideal C1: TeeTime (no affinity) 20 C2: TeeTime (prefer same CPU) C3: TeeTime (avoid same core) 18 C4: FastFlow (multi alloc) C5: FastFlow (single alloc) C6: TeeTime (Java) 16 14 Speedup 12 10 8 6 4 2 0 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 Number of worker threads Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 24 / 38

  27. Overview Design and Evaluation of TeeTime for C++ IO Benchmark, 20000 * 1MB 22 Ideal C1: TeeTime (no affinity) 20 C2: TeeTime (prefer same CPU) C3: TeeTime (avoid same core) 18 C4: FastFlow (multi alloc) C5: FastFlow (single alloc) C6: TeeTime (Java) 16 14 Speedup 12 10 8 6 4 2 0 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 Number of worker threads Johannes Ohlemacher Conception and Development of a Pipe & Filter Framework for C++ November 23, 2016 25 / 38

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend