Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
On 05/12/2015 12:25 PM, Nemanja S. wrote:
set_processr_affinity[some number between 0 and ]. When I run the
Discuss-gnuradio mailing list
[email protected]
Discuss-gnuradio Info Page
My guess is that your ~/.gnuradio/config.conf specifies to use the
single-threaded scheduler.
What Marcus said; GNU Radio 3.6 with its default scheduler, which is
aptly named thread-per-block scheduler, automatically runs every block
in its own thread, and by default (ie. unless you explicitely specify
affinity) lets the OS handle distribution to CPUs; that’s the reason GNU
Radio applications tend to scale very well on multiple CPUs, even if the
algorithms in the individual blocks are not heavily multithreaded.
Greetings,
Marcus
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
On 05/12/2015 12:52 PM, Nemanja S. wrote:
You are probably right, cause that file doesn’t even exist. I looked
at default gnuradio-core.conf in conf.d.
I suppose that something like that should be written in
gnuradi-core.conf, but really nothing.
Where can I find which option should be added?
How are you determining that this is only occupying a single core?
Are you running on a VM? If so, how many cores does your VM simulate?
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
If that file does not exist, GNU Radio 3.6.5 would definitely use the
thread-per-block scheduler; you can try
export GR_SCHEDULER=TPB
prior to executing your flow graph from the same shell.
In fact, looking at top_block_impl.cc:59 in 3.6.5.1, it seems the
scheduler selection isn’t read from a config file at all (which is a
bug, which I think someone might timely fix, it’s still there in
3.7…); if you want to know what your GNU Radio selects as a default
scheduler, do
export GR_SCHEDULER=“a room full of monkeys trying to act like managers”
python yourflowgraph.py
The default scheduler will be printed.
Best regards,
Marcus
Hi Nemanja,
I took the liberty of changing the subject to reflect the new topic ![]()
You’re right, the low pass filters that the firdes tool produces should
have linear phase, meaning that their impulse response is symmetrical
and they have a constant phase delay of half the filter length.
I don’t really think your synchronization as it is broken, but your
signals might be:
-
you’re doing a 27k-tap filter. That means you’re summing up 27k
floating point numbers when doing the convolution of signal and filter.
This might be a bit harsh for the numerical accuracy that a single
precision floating point number offers. IIRC, the general
(un-hand-optimized) volk kernel doing this just takes a single
accumulator variable and sums over all tap[k-n]*sample[n]; not the
optimal thing when it comes to numerical stability. However, hopefully
no longer streaks in the filter impulse response have the same sign –
thus minimizing these effects. I’d strongly recommend using
gr_filter_design, and plotting your filter’s impulse, and its frequency
response. Do you really need a transition width that narrow, or a ripple
that small, or a suppression that high? Can you not decimate after the
band pass? Does it have to be a complex band pass, or are the
requirements in the upper and lower transitions so different, that you
gain significantly by doing a LPF and a HPF after another? -
You do complex2mag??->low pass->logarithm. I don’t really think taking
the logarithm of a negative number is a good idea, and unless you now
your signal very well, I don’t think you can avoid getting negative
numbers out of that low pass [1].
Best regards,
Marcus
[1] http://imgur.com/70feESf (by the way, that example is a bit
constructed, but it brings the point across; it especially applies to
situations where your signal gets clipped and you’re working close to
nyquist)