Hackfest1403-2
Jump to navigation
Jump to search
Hackfest March 2014 at Ettus Research
Nathan West: Perf Counters and Monitor Enhancements
- Added new performance counters
- CPU cycles
- branch instructions
- branch misses
- cache references
- Uses same interface as used by perf; built in support to Performance Counters
- Updated the gr-perf-monitorx:
- Can select which perf counter the block size is based on (currently, only reps work time counter)
- Tooltip popup for each block to show all PCs
Example:
WIP: https://github.com/n-west/gnuradio/tree/linux-perf-counters
Todo:
- Make platform independent (ifdef out for OSX and Windows for now)
- Make sure we know the kernel requirements; check for them
- Test on ARM and any other platforms we can
- Add percent of total to tooltip popup
By GRCon14, have some success case and walk-through on how to use them. Take a block and get performance counter info; identify the areas that need work, fix them, and show that that changes the counters.
Tom Rondeau and Nick McCarthy
- Focused on integrating fecapi from https://github.com/namccart/fecapi into GNU Radio as part of gr-fec.
- Allows us to use an "encoder" and "decoder" block in a flowgraph.
- encoding and decoding for specific codes are passed as objects to these blocks
- GR blocks take care of things related to codes but not specific to any specific code
- puncturing
- threading models: 'capillary' is the default as a way to branch the threading model
- We have convolutional codes (rate=2, K=7) working
- Working on getting LDPC working from last GSoC as FECAPI-compatible
- Been in touch with Manu and Tracie to see about competing this
- Shown the CC working with a GNU Radio modem over a simulated channel
- Future Work
- Near term:
- Wrap up work done to integrate FECAPI; fix up some of the function calls
- DOCUMENTATION
- Clean up new work done to make detection and soft decision modems work with FEC blocks
- Longer term:
- More codes: Reed-Solomon as outer code; LDPC; others
- Ability to adjust codes are runtime
- Near term:
Nick Foster
- Improving MSK handling
- MSK correlator block for burst sync
- extension of correlate_and_sync for MSK (with Gaussian filter)
- Set BT=5 (i.e., some large number) for MSK
- extension of correlate_and_sync for MSK (with Gaussian filter)
- New MSK timing synchronization block
- HDLC framer and deframer
- already issued a pull request (172
Tom Tsou (not GNU Radio specific)
- Showed an LTE 20 MHZ signal receiver
- Showed timing recovery with Zadoff-Chu
- sub-banded to ~1 Msps
- Showed off his 3GPP approved "butterfly" channel model
- two antennas connected to a USRP moved up-and-down rapidly
- Also used handcar model
- USRP on a cart pushed back and forth
- QAM64 received signal in realtime
Ben Reynwar
- hierblocks for PFB channelizers (for threading control)
- pull request 180
- working on synthesizers
- want: hier block for building reconstruction filters
- Develop a model to autobuild a channelizer for for different channels and channel sizes
- Related to Tom Rondeau's recent paper
- The main trick will be in defining the channel structure
John Malsbury and Balint Seeber
- worked on gr-mac (formerly gr-precog migrated to 3.7)
- Support for:
- ARQ
- fragmenting
- ARP
- TUN/TAP or raw socket interface
- Passing PDUs to higher layers
- Showed OTA
- played BZTank (or BZFlag) over GR link
- Balint issued a number of pull request patches to improve GR's support for gr-mac
Here's Balint and John showing off their work.
Philip Balister
- Improving OpenEmbedded support for GNU Radio
- fixed issue with missing libgnuradio-xxx.so (without version)
- almost fixed swig2.0 (CMake looks for swig2.0 before swig; confusing things)
- This work will allow us to use the SDK to build both GNU Radio and GR OOT projects
Michael Dickens
- OSX cpu-thread affinity work:
- Determined that OSX kernel (mach / darwin), while providing an API for thread-cpu affinity, really-truly does not actually implement the functionality for doing so;
- The provided API functions are "processor_set_create" and "processor_set_destroy" from processor.c, and "thread_assign" from thread.c;
- There is one "CPU set" (global "pset0" from processor.c) which contains all active processors;
- Threads are assigned to active processors in the global CPU set as determined by the selected scheduling protocol (e.g., FIFO, RR) only;
- User (even as sudo) has no control over thread-cpu assignments;
- Work abandoned; no need to address this issue again! !@#% Apple ...
- 3 pull requests to GR maint, with 5 fixes including ticket #660
- Started addressing the "two-clock" problem:
- See, e.g., this thread on the GR discussion list
- When more than 1 sink/source is sample-rate based (e.g., audio source -> uhd sink);
- Actual sample rates will generally be close to those specified, but can easily be different by an unknown amount;
- When the sample rates differ, the flow graph will either eventually starve (sink is going faster than source), or back-pressure (source is going faster than sink);
- Proposed solution:
- Embed an arbitrary resampler to adjust the rates of a hardware source/sink once data is in the SDR flow-graph, or, if possible, using the hardware itself (e.g., OSX audio can do this easily);
- 1 input, 1 output; watch buffer "fullness" and try to keep within "reasonable" bounds (e.g., 25% to 75% full);
- Would be completely optional, disabled by default, enabled by user preference variable (name is to be decided);
- Implemented as a block inserted automatically between hardware source/sink and the next block, 1 input / 1 output;
- Inserted in flat_flowgraph or block_executor;
- Work in progress.
Tim O'Shea
- Focused on understanding the differences and uses of tagged stream blocks versus/with message PDUs
- Performance measurement and comparisons of equivalent tagged stream blocks and message blocks https://github.com/osh/gr-chunky
- Fix pmt's to_python and from_python methods for numpy arrays and uniform vectors for all supported types
- Looking into problem of flow control in message passing system
- Borrowed Phil's ODroid XU to add Arm-A15 benchmarks to http://stats.gnuradio.org/
- Worked on improved TDMA burst modem capabilities along with updated message-enabled eventstream blocks
- Built and posted a set of fpdu and cpdu plotting message blocks to be used in QT Guis https://github.com/osh/gr-pyqt