gnu radio advanced scheduler
play

GNU Radio Advanced Scheduler Dude: Josh Blum - New scheduler - PowerPoint PPT Presentation

GNU Radio Advanced Scheduler Dude: Josh Blum - New scheduler features and stuff GRAS - Project Goals Inherent thread safety actor model New buffer model Zero copy support In place buffers Custom allocators Hooks for


  1. GNU Radio Advanced Scheduler Dude: Josh Blum - New scheduler features and stuff

  2. GRAS - Project Goals ● Inherent thread safety – actor model ● New buffer model ● Zero copy support – In place buffers – Custom allocators ● Hooks for CPU/Node affinity ● Things that got fixed for free!

  3. GRAS- Thread safety and the actor model ● Thread pool services ac- tors ● Each actor is synchronous ● Messages in/replies to sender ● Messages to arbitrary ac- tors https://en.wikipedia.org/wiki/Actor_model

  4. GRAS - Theron library ● C++ implementation of the actor model ● Fast, lots of benchmarks ● Hooks for affinity ● Multiple thread pools ● Result: I don't have to think about thread synchronization mechanisms http://www.theron-library.com/

  5. GRAS – Current buffer model Doubly mapped/circular buffer Reader 1 Writer Reader 0 ● Pros – very strait forward implementation – Simple back-pressure model – Edge cases are very simple ● Cons – cant do “smarter” things w/ memory – Buffer is glued to an output port – Cant in-place or choose arbitrary memory

  6. GRAS – Message based buffer model Sink Port 0 B Source Port B Sink Port 1 ● New model means new possibilities ● Blocks pass reference counted buffers ● Pros – arbitrary buffer – Custom allocation – zero copy – Output buffer can be input - inplace ● Cons – complicates history and input reqs – Small memcpys

  7. GRAS – Dealing w/ history Buffer 0 Buffer 1 Z + Buff0 Buffer 0 Buff0 + Buff1 Buffer 1 ● Memcpy to meet history requirements – sux ● History reqs << buffer size (memcpys are small) ● Needs benchmarking

  8. GRAS – Affinity Hooks Node 0 Node 1 CPU CPU CPU CPU Hyper transport CPU CPU CPU CPU DDR Memory DDR Memory ● Memory bandwidth penalties for jumping nodes ● Flow graph topology based node association ● Or multiple flow graphs, 1 per node... etc

  9. GRAS – Things that got fixed ● Dynamic reconfiguration of flowgraph – Just change the topology and commit ● Hierarchical block fixes – connect to self to self - By bye kludge copy – Don't need gnuradio::get_initial_sptr for hiers!

  10. GRAS – Whats Done ● GNU Radio basically working – QA tests ● In-place buffers ● Custom input and output allocators ● Dynamic reconfiguration

  11. GRAS - TODO ● All QA tests passing ● GR hooks for setting thread pool – Creating thread pool w/ set affinities ● GR Extras features – PMT message passing – do native, many to one – Python blocks support ● Follow and support Theron development ● Benchmark, benchmark, benchmark!

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