Hey folks, I have been working on a new scheduler for GNU Radio, called the GNU Radio Advanced Scheduler (GRAS). GRAS is a complete re-write and overhaul of the stock GNU Radio scheduler to implement new features, performance enhancements, and a simplified user API. A new buffer and threading model gives GRAS zero copy features, allowing integration of DMA devices and seamless transition between stream and packet domains. Here is the main project wiki page:
https://github.com/guruofquality/gras/wiki Each feature has a mini-description on the Summary wiki with a link to greater detail and code examples. I think there is something in this project for everyone; whether you are into API design, models of computation, concurrency mechanisms, zero-copy, data flow topology... https://github.com/guruofquality/gras/wiki/Summary Nobody gives a lick about features without the horsepower! I have benchmarks on two PC variants: operton and i7. I am happy to report that the features do indeed offer performance benefits, and that GRAS is up to the challenge. The operton benchmarks look great, however I would like to see better results on the i7. https://github.com/guruofquality/gras/wiki/Benchmarks Behind all of the GRAS fluff, the Theron C++ concurrency library is the real scheduler; driving all of the work dispatching, threading, and synchronization. I have to give a special thanks to Ashton Mason for creating the Theron library. Both Theron and Ashton were a pleasure to work with. http://www.theron-library.com/ Whats next/whats in the queue for GRAS? Characterization. I need to run the benchmark suite on more platforms to get a better idea about how design decisions and trade-offs affect the performance. And I will try to optimize some of the more troubled benchmarks. GR Wrapper. The current wrapper that makes the GNU Radio blocks work on top of GRAS has seen a lot of development history. I plan to rewrite this wrapper to be slimmer and to reuse as much code as possible; much like the style of the new gnuradio-runtime component. Theron. A new version of Theron (v6) is in the works, with runtime selectable schedulers for different synchronization schemes, backoff mechanisms, and work dispatching optimizations. My hope is that this capability will allow users to easily optimize their applications for a particular architecture. Phew, that was a wordy email! Thoughts, feedback? -josh _______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
