+ All Categories
Home > Documents > A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++...

A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++...

Date post: 12-Jul-2020
Category:
Upload: others
View: 11 times
Download: 0 times
Share this document with a friend
12
1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl Rolando Inglés Piotr Perek Mariusz Orlikowski Andrzej Napieralski MIXDES 2015
Transcript
Page 1: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

1/12

A Simple Multithreaded C++ Framework for High-Performance

Data Acquisition Systems

{roling,pperek,mariuszo,napier}@dmcs.pl

Rolando Inglés Piotr Perek Mariusz Orlikowski Andrzej Napieralski

MIXDES 2015

Page 2: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

2/12

OUTLINE • Introduction

• Related Work

• The Simple C++ Framework

• Experimental Evaluation

• Results

• Conclusions

• Questions

A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

Page 3: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

3/12

Introduction A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

EoSens® 3CL Full CL MC3010 high-speed camera

Monitoring Data Workflow

Monitoring Data Production Rate

Source: EoSens® 3CL Camera Manual, Rev. 1.01, Copyright © 2010 Mikrotron GmbH.

The Project Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions

Page 4: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

4/12

Introduction A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

Monitoring Data Workflow

Data Acquisition System

The System Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions

Page 5: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

5/12

a library of non-blocking synchronization protocols Source: http://www.noble-library.org/index.html

Author: Håkan Sundell

Parallel programming: Alpha group Parallel Computing research cluster, Department of Computer Science University of Torino

High Performance Inter-Thread Messaging Library, based on Java.

LMAX Disruptor pattern C++ Implementation. Source Code: http://sourceforge.net/projects/cxxdisruptor/ Author: Henrik Baastrup

FastFlow

Related Work A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

libcds CDS C++ library - Concurrent Data Structures Source Code: http://sourceforge.net/projects/libcds/files/ Author: Max Khizhinsky

FAST CONCURRENT QUEUES FOR x86 PROCESSORS C++ CONCURRENCY PACKAGE

C++ parallel programming framework . Source Code: http://sourceforge.net/projects/mc-fastflow/

CxxDisruptor

Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions

Page 6: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

6/12

The Simple C++ Framework A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions

Page 7: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

7/12

Experimental Evaluation A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

The Environment

Intel® Core™ i5-520M Processor (3M Cache, 2.40 GHz)

4 GB of RAM Memory

Red Hat® Enterprise Linux® 7 64bits

Linux Kernel 3.10.0-123.el7.x86_64 GNU/Linux

g++ (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) Copyright (C) 2013 Free Software Foundation, Inc.

inputdata Input File containing frames with 680x480 pixels resolution

CxxDisruptor FastFlow Simple C++ Framework C++ Framework

Hint: The camera produces 1,495 fps with 680x480 pixels resolution configuration.

Hint: STL & Boost libraries have been used

Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions

Page 8: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

8/12

Experimental Evaluation A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

Timing Process Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions

Page 9: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

9/12

Results A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

Average Latency (ns)

C++ Boost = Lowest latency More slots ≠ Lower latency

Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions

Page 10: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

10/12

Results A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

Latency Message

Frequency (ns)

CxxDisruptor = 97% C++ STL = 98%

Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions

Page 11: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

11/12

Conclusions A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

• By using C++ standard libraries is possible to develop a C++ framework obtaining satisfactory performance.

• Some optimization should be incorporated to reduce the amount of messages with variable latency.

• The four frameworks work with 100% of accuracy.

Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions

Page 12: A Simple Multithreaded C++ Framework for High-Performance ... · 1/12 A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems {roling,pperek,mariuszo,napier}@dmcs.pl

12/12

A Simple Multithreaded C++ Framework for High-Performance Data Acquisition Systems

Questions…

…appreciate your kind attention!

Introduction The Project The System

Related Work CxxDisruptor & FastFlow

The Simple C++ Framework Experimental Evaluation

The Environment Timing Process

Results Average Latency Frequency Latency

Conclusions Questions


Recommended