[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Really big items, best practices?

From: Michael Dickens
Subject: Re: [Discuss-gnuradio] Really big items, best practices?
Date: Wed, 18 Jan 2012 08:56:35 -0500

You can always do what William Plishker (et.al) did for their GPU work -- go to 
< http://gnuradio.org/redmine/projects/gnuradio/wiki/GRConf2011 > and look for 
GPGPU.  They create a separate (but shared among the various process threads), 
non-kernel memory buffer, and then place a pointer (or handle, IDK) to it into 
the GR-buffer.  In this way, they can do processing on any number of items, 
using just a pointer per effective buffer.  Sort of takes the wind out of the 
GR scheduler (since, for all practical purposes you'll probably want do to 
processing on each "item" as it becomes available), but I'm sure you can make 
it work for you.

A historical note for those who care: This style of data propagation and 
processing goes back to (at least) the "olde days" (late 60's / early 70's) 
before SDR (which really originated in the late 80's, and the term was coined 
in the early 90's) -- called "Flow Based Programming" & is still in use today 
in various forms.  You pass tokens (a handle or pointer to data [possibly 
structured as a packet, or just an unstructured frame]) around instead of 
actual data, do processing using those tokens, keep passing them on and/or 
create new ones & discard the old ones.

While I like double-mapped circular buffers because they make edge-condition 
checking simple, they do have their limitations (e.g., can only be so large) -- 
and, having the ability to pass tokens would be quite useful for some types of 
processing.  Seems like there should be a way to have both at the same time, 
using the same underlying buffering concepts.  That way, you could pass actual 
data or just tokens to data, and so long as the receiving block knew what to 
expect it could accommodate.

My US$0.02 - MLD

reply via email to

[Prev in Thread] Current Thread [Next in Thread]