discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Number of samples in a Sync block - clarification


From: Nicolas Cuervo Benavides
Subject: Re: [Discuss-gnuradio] Number of samples in a Sync block - clarification
Date: Fri, 11 Sep 2015 13:41:30 +0200

Hi all,

Thank you for your clarifications, Now I understand the concept much better.

Best regards

On Thu, Sep 10, 2015 at 8:36 PM, Richard Bell <address@hidden> wrote:
Nicolas,

The GNU Radio scheduler hands your block a certain number of samples everytime the blocks work function is called. The work function gets called many times over the course of a running flowgraph. To be technically correct, the scheduler tells your block how much memory it has to store output (noutput_items) and makes sure you have enough input to produce an output, which it learned from the forecast() function. In your case, you're seeing the scheduler give 4096 samples to the block in a call to work. This doesn't mean you are stuck using only 4096 samples, it just means you have to write your code so that it collects what it needs over the course of several calls to work and then computes an output. I know this is hard to understand for beginners, but it's central to how GNU Radio works, so worth absorbing.

set_output_multiple() gives you a little more control on what noutput_items will be. For example, set_output_multiple(100000) tells the scheduler that it shouldn't call your work function unless it can provide 100,000 noutput_items or more. That means it could be 200,000, 300,000, N*100,000 where N is a positive integer. If you overuse this, you might hurt performance of your flowgraph, because you're placing additional constraints on the scheduler. I try to avoid it unless I find I really need it. I almost never need it.

Hope that helps,
Rich

On Thu, Sep 10, 2015 at 9:37 AM, Martin Braun <address@hidden> wrote:
On 10.09.2015 07:25, Nicolas Cuervo Benavides wrote:
> 1. Where does the 4096 comes from? it is 2¹², which I don't recall being
> 12 the size of one datatype that is involved in my function. It is
> directly a value from scheduler and always the same?

This value is pretty much random; 4096 works well with pages, but it
could be any other value. noutput_items is how much valid items you have
in your buffer. On the *first run*, all other values will be zero (but
after that, they may contain old samples).

> 2. If it is not always the same value, how I am indirectly fixing that
> amount of samples? I would like, if possible, to save more samples as it
> would reduce the variance of the calculations.

You need to construct your block to handle *any* number of samples,
unless you constrain it e.g. with set_output_multiple(). Your variance
can be calculated over several work() calls, until you've read enough
samples.

Your code may have some other issues, but it's hard to say without
seeing the rest of the work function.

M

_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




--
Nicolás Cuervo Benavides
Handy: +49 157 70476855
Electric and Electronic Engineering department.
Electronic Engineering
Universidad Nacional de Colombia
--
Student M.Sc. Information and Communication Technology
Karlsruher Institut für Technologie
Karlsruhe, Baden Würtemberg, Germany 

reply via email to

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