Another question i forgot to include in the original mail:

Is there any point in trying to optimize a blocks performance by using OPEN
MP or pthreads in cases of embarrasingly parallel operations? Or is it
totally useless since all the cores are already at full load because there
is one thread per block? I know that i could also try to use the GPU to
speed up these kind of operations, but my first attempt was processor
threads.

2016-02-07 16:58 GMT-03:00 Gonzalo Arcos <gonzaloarco...@gmail.com>:

> Hello,
>
> I am trying to optimize the throughput of a flowgraph that was given to
> me, already designed and working. I have profiled every block, and improved
> on the performance of some blocks, which resulted in a better performance
> of the flowgraph as a whole.
>
> However, at the moment, i am trying to tackle on how the graph is executed
> by the gnuradio scheduler, to see if i can parallelize anything (i.e.
> pipeline) that is currently being executed sequentially with no good reason.
>
> To do this, i am trying to understand how does the gnuradio scheduler
> work, how blocks are executed, etc. I have not found as much information as
> i would like, leaving me with lots of questions. So from this point on i
> will state some of the information i gathered, and ask some questions. If
> anything i say is incorrect please tell me.
>
>  GNURadio defines one thread per block. This means that GNURadio
> automatically takes full advantage of multi core processors, without the
> programmer of the blocks having to do anything, given a high number of
> blocks.
>
> - However, how does gnuradio scheduler decide which block to execute given
> a set of "ready to execute" blocks, without dependencies between them?
>
> - If i have a flowgraph A -> B on a dual core processor, A and B being
> blocks. Will A and B execute concurrently after the first iteration of A?
> By this i mean, on the first iteration of A, B has no data to work on, so
> one core will be idle, however after that, both cores should be working,
> since B can process data sent by A, and A can process new data independent
> of what B is doing.
> If A is faster than B at processing data, does A data gets queued on a
> buffer, and then is sent to B? Does B only triggers when the data
> requirements to perform a work (i.e. input items) are reached?.
>
> - Is there any way to see which gnuradio thread is executing in each core
> of the cpu, and which block corresponds to that thread? (This would be *REALLY
> USEFUL* for debugging purposes)
>
> - In the gnuradio wiki it is explained how to set thread affinity and
> priority. However, it is not clear what they are useful for. Thread
> priority is pretty straightforward, so the only concept i dont fully get is
> the block thread affinity. In which scenario could it be useful to set that
> a thread has to run on a specific core?
>
> Thanks in advance for your answers.
>
> Kind Regards,
> Gonzalo Arcos
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to