equinox a c 11 platform for realtime sdr applications
play

Equinox: A C++11 platform for realtime SDR applications Equinox: A - PowerPoint PPT Presentation

Equinox: A C++11 platform for realtime SDR applications Equinox: A C++11 platform for realtime SDR applications GSA 2019 Manolis Surligas surligas@csd.uoc.gr Computer Science Department, University of Crete Equinox Equinox is a C++11


  1. Equinox: A C++11 platform for realtime SDR applications Equinox: A C++11 platform for realtime SDR applications GSA 2019 Manolis Surligas surligas@csd.uoc.gr Computer Science Department, University of Crete

  2. Equinox • Equinox is a C++11 based SDR platform • Based on message passing rather than streaming Goals • Extendable via plugins • Adapt to application requirements • Provide a Visual Programming language • Proper handling of bursty transmissions • Reduce latency 1

  3. Equinox Why C++11? • Modern, fast, complete • Range based loops • Shared pointers • Integrated threading library • Bye-bye Boost!!! 2

  4. Architecture 3 Equinox Core Kernels GUI Memory Management QT5 Math Graph analysis DSP Filtering Scheduling FFT Load balancing etc

  5. Qt5 UI 4

  6. Memory Management • NO dynamic memory allocation 5 • Each output port holds a memory pool • Memory pools with pre-allocated memory Mem Pool 1 Mem Pool 0 Msg 3 Msg 2 Msg 1 Msg 22 Msg 0 Kernel 0 Msg 21 Msg 20 Kernel 1 Kernel 2

  7. Memory Management • Kernels exchange messages of fixed size • Each message is a std::shared_ptr pointer to a memory location at the memory pool • Each output port is a message queue holding message pointers • No memory copy, just pass the pointers (Zero-Copy) • Automatic garbage collection, through the std::shared_ptr based messages 6

  8. Equinox: Graph analysis & Load balancing • Platforms like GNU Radio, follow a one-thread-per-block approach • This is fine, as soon as the number of blocks is small • Modern telecommunications systems require a large number of processing tasks • E.g IEEE 802.11 transceiver has about 40 blocks • Thread synchronization, preemption and cache misses overhead starts to exceed the actual computation 7

  9. Graph analysis & Load balancing • Equinox tries to balance these overheads • Use minimum number of threads • Exploit graph topology • Assign effjciently the processing tasks into the available worker threads 8

  10. Graph analysis & Load balancing workers to avoid indirect data dependencies • The first task is to identify the connected components of 9 • Difgerent components should be assigned to difgerent the graph • Use a slightly altered version of the DFS Worker 1 Worker 1 Kernel A Kernel B Kernel C Kernel A Kernel B Kernel C Kernel M Kernel N Kernel M Kernel N Worker 0 Worker 0

  11. Graph analysis & Load balancing • Then split the graph into N sub-graphs, where N is the number of workers • Equinox provides difgerent ways to split the graph • The most interesting is the spectral method • Split the graph based on the eigenvalues of the adjacency matrix • Minimizes the connections between sub-graphs 10

  12. Other applications? Is Equinox only for SDR applications? • Audio processing • Video processing • Network applications • Packet tagging • Filtering • DPI 11 • Handle frames as messages �

  13. Join the party! https://gitlab.com/equinox-sdr/equinox 11

  14. Questions? 11

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